Merge remote-tracking branch 'upstream/2.1' into 2.1-i18n-de-spelling

This commit is contained in:
Thomas-Karl Pietrowski 2016-02-07 11:20:16 +01:00
commit e3163155bd
24 changed files with 11632 additions and 3587 deletions

View file

@ -44,7 +44,7 @@ if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "")
file(GLOB po_files ${CMAKE_SOURCE_DIR}/resources/i18n/${lang}/*.po)
foreach(po_file ${po_files})
string(REGEX REPLACE ".*/(.*).po" "${CMAKE_BINARY_DIR}/resources/i18n/${lang}/LC_MESSAGES/\\1.mo" mo_file ${po_file})
add_custom_command(TARGET translations POST_BUILD COMMAND mkdir ARGS -p ${CMAKE_BINARY_DIR}/resources/i18n/${lang}/LC_MESSAGES/ COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} ARGS ${po_file} -o ${mo_file})
add_custom_command(TARGET translations POST_BUILD COMMAND mkdir ARGS -p ${CMAKE_BINARY_DIR}/resources/i18n/${lang}/LC_MESSAGES/ COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} ARGS ${po_file} -o ${mo_file} -f)
endforeach()
endforeach()
install(DIRECTORY ${CMAKE_BINARY_DIR}/resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)

View file

@ -57,8 +57,10 @@ numpy.seterr(all="ignore")
if platform.system() == "Linux": # Needed for platform.linux_distribution, which is not available on Windows and OSX
# For Ubuntu: https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826
if platform.linux_distribution()[0] in ("Ubuntu", ): # Just in case it also happens on Debian, so it can be added
from OpenGL import GL
if platform.linux_distribution()[0] in ("Ubuntu", ): # TODO: Needs a "if X11_GFX == 'nvidia'" here. The workaround is only needed on Ubuntu+NVidia drivers. Other drivers are not affected, but fine with this fix.
import ctypes
from ctypes.util import find_library
ctypes.CDLL(find_library('GL'), ctypes.RTLD_GLOBAL)
try:
from cura.CuraVersion import CuraVersion

View file

@ -131,7 +131,7 @@ class Layer():
continue
if not make_mesh and not (polygon.type == Polygon.MoveCombingType or polygon.type == Polygon.MoveRetractionType):
continue
poly_color = polygon.getColor()
points = numpy.copy(polygon.data)
@ -140,26 +140,7 @@ class Layer():
if polygon.type == Polygon.MoveCombingType or polygon.type == Polygon.MoveRetractionType:
points[:,1] += 0.01
# Calculate normals for the entire polygon using numpy.
normals = numpy.copy(points)
normals[:,1] = 0.0 # We are only interested in 2D normals
# Calculate the edges between points.
# The call to numpy.roll shifts the entire array by one so that
# we end up subtracting each next point from the current, wrapping
# around. This gives us the edges from the next point to the current
# point.
normals[:] = normals[:] - numpy.roll(normals, -1, axis = 0)
# Calculate the length of each edge using standard Pythagoras
lengths = numpy.sqrt(normals[:,0] ** 2 + normals[:,2] ** 2)
# The normal of a 2D vector is equal to its x and y coordinates swapped
# and then x inverted. This code does that.
normals[:,[0, 2]] = normals[:,[2, 0]]
normals[:,0] *= -1
# Normalize the normals.
normals[:,0] /= lengths
normals[:,2] /= lengths
normals = polygon.getNormals()
# Scale all by the line width of the polygon so we can easily offset.
normals *= (polygon.lineWidth / 2)
@ -199,16 +180,33 @@ class Polygon():
self._data = data
self._line_width = line_width / 1000
if type == self.Inset0Type:
self._color = Color(1.0, 0.0, 0.0, 1.0)
elif self._type == self.InsetXType:
self._color = Color(0.0, 1.0, 0.0, 1.0)
elif self._type == self.SkinType:
self._color = Color(1.0, 1.0, 0.0, 1.0)
elif self._type == self.SupportType:
self._color = Color(0.0, 1.0, 1.0, 1.0)
elif self._type == self.SkirtType:
self._color = Color(0.0, 1.0, 1.0, 1.0)
elif self._type == self.InfillType:
self._color = Color(1.0, 0.74, 0.0, 1.0)
elif self._type == self.SupportInfillType:
self._color = Color(0.0, 1.0, 1.0, 1.0)
elif self._type == self.MoveCombingType:
self._color = Color(0.0, 0.0, 1.0, 1.0)
elif self._type == self.MoveRetractionType:
self._color = Color(0.5, 0.5, 1.0, 1.0)
else:
self._color = Color(1.0, 1.0, 1.0, 1.0)
def build(self, offset, vertices, colors, indices):
self._begin = offset
self._end = self._begin + len(self._data) - 1
color = self.getColor()
color.setValues(color.r * 0.5, color.g * 0.5, color.b * 0.5, color.a)
color = numpy.array([color.r, color.g, color.b, color.a], numpy.float32)
vertices[self._begin:self._end + 1, :] = self._data[:, :]
colors[self._begin:self._end + 1, :] = color
colors[self._begin:self._end + 1, :] = numpy.array([self._color.r * 0.5, self._color.g * 0.5, self._color.b * 0.5, self._color.a], numpy.float32)
for i in range(self._begin, self._end):
indices[i, 0] = i
@ -218,26 +216,7 @@ class Polygon():
indices[self._end, 1] = self._begin
def getColor(self):
if self._type == self.Inset0Type:
return Color(1.0, 0.0, 0.0, 1.0)
elif self._type == self.InsetXType:
return Color(0.0, 1.0, 0.0, 1.0)
elif self._type == self.SkinType:
return Color(1.0, 1.0, 0.0, 1.0)
elif self._type == self.SupportType:
return Color(0.0, 1.0, 1.0, 1.0)
elif self._type == self.SkirtType:
return Color(0.0, 1.0, 1.0, 1.0)
elif self._type == self.InfillType:
return Color(1.0, 0.74, 0.0, 1.0)
elif self._type == self.SupportInfillType:
return Color(0.0, 1.0, 1.0, 1.0)
elif self._type == self.MoveCombingType:
return Color(0.0, 0.0, 1.0, 1.0)
elif self._type == self.MoveRetractionType:
return Color(0.5, 0.5, 1.0, 1.0)
else:
return Color(1.0, 1.0, 1.0, 1.0)
return self._color
def vertexCount(self):
return len(self._data)
@ -257,3 +236,27 @@ class Polygon():
@property
def lineWidth(self):
return self._line_width
# Calculate normals for the entire polygon using numpy.
def getNormals(self):
normals = numpy.copy(self._data)
normals[:,1] = 0.0 # We are only interested in 2D normals
# Calculate the edges between points.
# The call to numpy.roll shifts the entire array by one so that
# we end up subtracting each next point from the current, wrapping
# around. This gives us the edges from the next point to the current
# point.
normals[:] = normals[:] - numpy.roll(normals, -1, axis = 0)
# Calculate the length of each edge using standard Pythagoras
lengths = numpy.sqrt(normals[:,0] ** 2 + normals[:,2] ** 2)
# The normal of a 2D vector is equal to its x and y coordinates swapped
# and then x inverted. This code does that.
normals[:,[0, 2]] = normals[:,[2, 0]]
normals[:,0] *= -1
# Normalize the normals.
normals[:,0] /= lengths
normals[:,2] /= lengths
return normals

View file

@ -0,0 +1,104 @@
syntax = "proto3";
package cura.proto;
message ObjectList
{
repeated Object objects = 1;
repeated Setting settings = 2;
}
// typeid 1
message Slice
{
repeated ObjectList object_lists = 1;
}
message Object
{
int64 id = 1;
bytes vertices = 2; //An array of 3 floats.
bytes normals = 3; //An array of 3 floats.
bytes indices = 4; //An array of ints.
repeated Setting settings = 5; // Setting override per object, overruling the global settings.
}
// typeid 3
message Progress
{
float amount = 1;
}
// typeid 2
message SlicedObjectList
{
repeated SlicedObject objects = 1;
}
message SlicedObject
{
int64 id = 1;
repeated Layer layers = 2;
}
message Layer {
int32 id = 1;
float height = 2;
float thickness = 3;
repeated Polygon polygons = 4;
}
message Polygon {
enum Type {
NoneType = 0;
Inset0Type = 1;
InsetXType = 2;
SkinType = 3;
SupportType = 4;
SkirtType = 5;
InfillType = 6;
SupportInfillType = 7;
MoveCombingType = 8;
MoveRetractionType = 9;
}
Type type = 1;
bytes points = 2;
float line_width = 3;
}
// typeid 4
message GCodeLayer {
int64 id = 1;
bytes data = 2;
}
// typeid 5
message ObjectPrintTime {
int64 id = 1;
float time = 2;
float material_amount = 3;
}
// typeid 6
message SettingList {
repeated Setting settings = 1;
}
message Setting {
string name = 1;
bytes value = 2;
}
// typeid 7
message GCodePrefix {
bytes data = 2;
}
// typeid 8
message SlicingFinished {
}

View file

@ -13,9 +13,9 @@ from UM.Qt.Bindings.BackendProxy import BackendState #To determine the state of
from UM.Resources import Resources
from UM.Settings.SettingOverrideDecorator import SettingOverrideDecorator
from UM.Message import Message
from UM.PluginRegistry import PluginRegistry
from cura.OneAtATimeIterator import OneAtATimeIterator
from . import Cura_pb2
from . import ProcessSlicedObjectListJob
from . import ProcessGCodeJob
from . import StartSliceJob
@ -62,12 +62,12 @@ class CuraEngineBackend(Backend):
self._change_timer.setSingleShot(True)
self._change_timer.timeout.connect(self.slice)
self._message_handlers[Cura_pb2.SlicedObjectList] = self._onSlicedObjectListMessage
self._message_handlers[Cura_pb2.Progress] = self._onProgressMessage
self._message_handlers[Cura_pb2.GCodeLayer] = self._onGCodeLayerMessage
self._message_handlers[Cura_pb2.GCodePrefix] = self._onGCodePrefixMessage
self._message_handlers[Cura_pb2.ObjectPrintTime] = self._onObjectPrintTimeMessage
self._message_handlers[Cura_pb2.SlicingFinished] = self._onSlicingFinishedMessage
self._message_handlers["cura.proto.SlicedObjectList"] = self._onSlicedObjectListMessage
self._message_handlers["cura.proto.Progress"] = self._onProgressMessage
self._message_handlers["cura.proto.GCodeLayer"] = self._onGCodeLayerMessage
self._message_handlers["cura.proto.GCodePrefix"] = self._onGCodePrefixMessage
self._message_handlers["cura.proto.ObjectPrintTime"] = self._onObjectPrintTimeMessage
self._message_handlers["cura.proto.SlicingFinished"] = self._onSlicingFinishedMessage
self._slicing = False
self._restart = False
@ -213,13 +213,6 @@ class CuraEngineBackend(Backend):
self._message.hide()
self._message = None
if self._always_restart:
try:
self._process.terminate()
self._createSocket()
except: # terminating a process that is already terminating causes an exception, silently ignore this.
pass
def _onGCodeLayerMessage(self, message):
self._scene.gcode_list.append(message.data.decode("utf-8", "replace"))
@ -230,16 +223,7 @@ class CuraEngineBackend(Backend):
self.printDurationMessage.emit(message.time, message.material_amount)
def _createSocket(self):
super()._createSocket()
self._socket.registerMessageType(1, Cura_pb2.Slice)
self._socket.registerMessageType(2, Cura_pb2.SlicedObjectList)
self._socket.registerMessageType(3, Cura_pb2.Progress)
self._socket.registerMessageType(4, Cura_pb2.GCodeLayer)
self._socket.registerMessageType(5, Cura_pb2.ObjectPrintTime)
self._socket.registerMessageType(6, Cura_pb2.SettingList)
self._socket.registerMessageType(7, Cura_pb2.GCodePrefix)
self._socket.registerMessageType(8, Cura_pb2.SlicingFinished)
super()._createSocket(os.path.abspath(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "Cura.proto")))
## Manually triggers a reslice
def forceSlice(self):
@ -278,7 +262,6 @@ class CuraEngineBackend(Backend):
else:
self._layer_view_active = False
def _onInstanceChanged(self):
self._terminate()
self.slicingCancelled.emit()

View file

@ -1,739 +0,0 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: Cura.proto
import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor.FileDescriptor(
name='Cura.proto',
package='cura.proto',
syntax='proto3',
serialized_pb=_b('\n\nCura.proto\x12\ncura.proto\"X\n\nObjectList\x12#\n\x07objects\x18\x01 \x03(\x0b\x32\x12.cura.proto.Object\x12%\n\x08settings\x18\x02 \x03(\x0b\x32\x13.cura.proto.Setting\"5\n\x05Slice\x12,\n\x0cobject_lists\x18\x01 \x03(\x0b\x32\x16.cura.proto.ObjectList\"o\n\x06Object\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x10\n\x08vertices\x18\x02 \x01(\x0c\x12\x0f\n\x07normals\x18\x03 \x01(\x0c\x12\x0f\n\x07indices\x18\x04 \x01(\x0c\x12%\n\x08settings\x18\x05 \x03(\x0b\x32\x13.cura.proto.Setting\"\x1a\n\x08Progress\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x02\"=\n\x10SlicedObjectList\x12)\n\x07objects\x18\x01 \x03(\x0b\x32\x18.cura.proto.SlicedObject\"=\n\x0cSlicedObject\x12\n\n\x02id\x18\x01 \x01(\x03\x12!\n\x06layers\x18\x02 \x03(\x0b\x32\x11.cura.proto.Layer\"]\n\x05Layer\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x02\x12\x11\n\tthickness\x18\x03 \x01(\x02\x12%\n\x08polygons\x18\x04 \x03(\x0b\x32\x13.cura.proto.Polygon\"\x8e\x02\n\x07Polygon\x12&\n\x04type\x18\x01 \x01(\x0e\x32\x18.cura.proto.Polygon.Type\x12\x0e\n\x06points\x18\x02 \x01(\x0c\x12\x12\n\nline_width\x18\x03 \x01(\x02\"\xb6\x01\n\x04Type\x12\x0c\n\x08NoneType\x10\x00\x12\x0e\n\nInset0Type\x10\x01\x12\x0e\n\nInsetXType\x10\x02\x12\x0c\n\x08SkinType\x10\x03\x12\x0f\n\x0bSupportType\x10\x04\x12\r\n\tSkirtType\x10\x05\x12\x0e\n\nInfillType\x10\x06\x12\x15\n\x11SupportInfillType\x10\x07\x12\x13\n\x0fMoveCombingType\x10\x08\x12\x16\n\x12MoveRetractionType\x10\t\"&\n\nGCodeLayer\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"D\n\x0fObjectPrintTime\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0c\n\x04time\x18\x02 \x01(\x02\x12\x17\n\x0fmaterial_amount\x18\x03 \x01(\x02\"4\n\x0bSettingList\x12%\n\x08settings\x18\x01 \x03(\x0b\x32\x13.cura.proto.Setting\"&\n\x07Setting\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\"\x1b\n\x0bGCodePrefix\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x11\n\x0fSlicingFinishedb\x06proto3')
)
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
_POLYGON_TYPE = _descriptor.EnumDescriptor(
name='Type',
full_name='cura.proto.Polygon.Type',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='NoneType', index=0, number=0,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='Inset0Type', index=1, number=1,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='InsetXType', index=2, number=2,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='SkinType', index=3, number=3,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='SupportType', index=4, number=4,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='SkirtType', index=5, number=5,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='InfillType', index=6, number=6,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='SupportInfillType', index=7, number=7,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='MoveCombingType', index=8, number=8,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='MoveRetractionType', index=9, number=9,
options=None,
type=None),
],
containing_type=None,
options=None,
serialized_start=622,
serialized_end=804,
)
_sym_db.RegisterEnumDescriptor(_POLYGON_TYPE)
_OBJECTLIST = _descriptor.Descriptor(
name='ObjectList',
full_name='cura.proto.ObjectList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='objects', full_name='cura.proto.ObjectList.objects', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='settings', full_name='cura.proto.ObjectList.settings', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=26,
serialized_end=114,
)
_SLICE = _descriptor.Descriptor(
name='Slice',
full_name='cura.proto.Slice',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='object_lists', full_name='cura.proto.Slice.object_lists', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=116,
serialized_end=169,
)
_OBJECT = _descriptor.Descriptor(
name='Object',
full_name='cura.proto.Object',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='id', full_name='cura.proto.Object.id', index=0,
number=1, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='vertices', full_name='cura.proto.Object.vertices', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='normals', full_name='cura.proto.Object.normals', index=2,
number=3, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='indices', full_name='cura.proto.Object.indices', index=3,
number=4, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='settings', full_name='cura.proto.Object.settings', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=171,
serialized_end=282,
)
_PROGRESS = _descriptor.Descriptor(
name='Progress',
full_name='cura.proto.Progress',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='amount', full_name='cura.proto.Progress.amount', index=0,
number=1, type=2, cpp_type=6, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=284,
serialized_end=310,
)
_SLICEDOBJECTLIST = _descriptor.Descriptor(
name='SlicedObjectList',
full_name='cura.proto.SlicedObjectList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='objects', full_name='cura.proto.SlicedObjectList.objects', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=312,
serialized_end=373,
)
_SLICEDOBJECT = _descriptor.Descriptor(
name='SlicedObject',
full_name='cura.proto.SlicedObject',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='id', full_name='cura.proto.SlicedObject.id', index=0,
number=1, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='layers', full_name='cura.proto.SlicedObject.layers', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=375,
serialized_end=436,
)
_LAYER = _descriptor.Descriptor(
name='Layer',
full_name='cura.proto.Layer',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='id', full_name='cura.proto.Layer.id', index=0,
number=1, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='height', full_name='cura.proto.Layer.height', index=1,
number=2, type=2, cpp_type=6, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='thickness', full_name='cura.proto.Layer.thickness', index=2,
number=3, type=2, cpp_type=6, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='polygons', full_name='cura.proto.Layer.polygons', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=438,
serialized_end=531,
)
_POLYGON = _descriptor.Descriptor(
name='Polygon',
full_name='cura.proto.Polygon',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='type', full_name='cura.proto.Polygon.type', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='points', full_name='cura.proto.Polygon.points', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='line_width', full_name='cura.proto.Polygon.line_width', index=2,
number=3, type=2, cpp_type=6, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
_POLYGON_TYPE,
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=534,
serialized_end=804,
)
_GCODELAYER = _descriptor.Descriptor(
name='GCodeLayer',
full_name='cura.proto.GCodeLayer',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='id', full_name='cura.proto.GCodeLayer.id', index=0,
number=1, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='data', full_name='cura.proto.GCodeLayer.data', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=806,
serialized_end=844,
)
_OBJECTPRINTTIME = _descriptor.Descriptor(
name='ObjectPrintTime',
full_name='cura.proto.ObjectPrintTime',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='id', full_name='cura.proto.ObjectPrintTime.id', index=0,
number=1, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='time', full_name='cura.proto.ObjectPrintTime.time', index=1,
number=2, type=2, cpp_type=6, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='material_amount', full_name='cura.proto.ObjectPrintTime.material_amount', index=2,
number=3, type=2, cpp_type=6, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=846,
serialized_end=914,
)
_SETTINGLIST = _descriptor.Descriptor(
name='SettingList',
full_name='cura.proto.SettingList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='settings', full_name='cura.proto.SettingList.settings', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=916,
serialized_end=968,
)
_SETTING = _descriptor.Descriptor(
name='Setting',
full_name='cura.proto.Setting',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='cura.proto.Setting.name', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='value', full_name='cura.proto.Setting.value', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=970,
serialized_end=1008,
)
_GCODEPREFIX = _descriptor.Descriptor(
name='GCodePrefix',
full_name='cura.proto.GCodePrefix',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='data', full_name='cura.proto.GCodePrefix.data', index=0,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1010,
serialized_end=1037,
)
_SLICINGFINISHED = _descriptor.Descriptor(
name='SlicingFinished',
full_name='cura.proto.SlicingFinished',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1039,
serialized_end=1056,
)
_OBJECTLIST.fields_by_name['objects'].message_type = _OBJECT
_OBJECTLIST.fields_by_name['settings'].message_type = _SETTING
_SLICE.fields_by_name['object_lists'].message_type = _OBJECTLIST
_OBJECT.fields_by_name['settings'].message_type = _SETTING
_SLICEDOBJECTLIST.fields_by_name['objects'].message_type = _SLICEDOBJECT
_SLICEDOBJECT.fields_by_name['layers'].message_type = _LAYER
_LAYER.fields_by_name['polygons'].message_type = _POLYGON
_POLYGON.fields_by_name['type'].enum_type = _POLYGON_TYPE
_POLYGON_TYPE.containing_type = _POLYGON
_SETTINGLIST.fields_by_name['settings'].message_type = _SETTING
DESCRIPTOR.message_types_by_name['ObjectList'] = _OBJECTLIST
DESCRIPTOR.message_types_by_name['Slice'] = _SLICE
DESCRIPTOR.message_types_by_name['Object'] = _OBJECT
DESCRIPTOR.message_types_by_name['Progress'] = _PROGRESS
DESCRIPTOR.message_types_by_name['SlicedObjectList'] = _SLICEDOBJECTLIST
DESCRIPTOR.message_types_by_name['SlicedObject'] = _SLICEDOBJECT
DESCRIPTOR.message_types_by_name['Layer'] = _LAYER
DESCRIPTOR.message_types_by_name['Polygon'] = _POLYGON
DESCRIPTOR.message_types_by_name['GCodeLayer'] = _GCODELAYER
DESCRIPTOR.message_types_by_name['ObjectPrintTime'] = _OBJECTPRINTTIME
DESCRIPTOR.message_types_by_name['SettingList'] = _SETTINGLIST
DESCRIPTOR.message_types_by_name['Setting'] = _SETTING
DESCRIPTOR.message_types_by_name['GCodePrefix'] = _GCODEPREFIX
DESCRIPTOR.message_types_by_name['SlicingFinished'] = _SLICINGFINISHED
ObjectList = _reflection.GeneratedProtocolMessageType('ObjectList', (_message.Message,), dict(
DESCRIPTOR = _OBJECTLIST,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.ObjectList)
))
_sym_db.RegisterMessage(ObjectList)
Slice = _reflection.GeneratedProtocolMessageType('Slice', (_message.Message,), dict(
DESCRIPTOR = _SLICE,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.Slice)
))
_sym_db.RegisterMessage(Slice)
Object = _reflection.GeneratedProtocolMessageType('Object', (_message.Message,), dict(
DESCRIPTOR = _OBJECT,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.Object)
))
_sym_db.RegisterMessage(Object)
Progress = _reflection.GeneratedProtocolMessageType('Progress', (_message.Message,), dict(
DESCRIPTOR = _PROGRESS,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.Progress)
))
_sym_db.RegisterMessage(Progress)
SlicedObjectList = _reflection.GeneratedProtocolMessageType('SlicedObjectList', (_message.Message,), dict(
DESCRIPTOR = _SLICEDOBJECTLIST,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.SlicedObjectList)
))
_sym_db.RegisterMessage(SlicedObjectList)
SlicedObject = _reflection.GeneratedProtocolMessageType('SlicedObject', (_message.Message,), dict(
DESCRIPTOR = _SLICEDOBJECT,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.SlicedObject)
))
_sym_db.RegisterMessage(SlicedObject)
Layer = _reflection.GeneratedProtocolMessageType('Layer', (_message.Message,), dict(
DESCRIPTOR = _LAYER,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.Layer)
))
_sym_db.RegisterMessage(Layer)
Polygon = _reflection.GeneratedProtocolMessageType('Polygon', (_message.Message,), dict(
DESCRIPTOR = _POLYGON,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.Polygon)
))
_sym_db.RegisterMessage(Polygon)
GCodeLayer = _reflection.GeneratedProtocolMessageType('GCodeLayer', (_message.Message,), dict(
DESCRIPTOR = _GCODELAYER,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.GCodeLayer)
))
_sym_db.RegisterMessage(GCodeLayer)
ObjectPrintTime = _reflection.GeneratedProtocolMessageType('ObjectPrintTime', (_message.Message,), dict(
DESCRIPTOR = _OBJECTPRINTTIME,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.ObjectPrintTime)
))
_sym_db.RegisterMessage(ObjectPrintTime)
SettingList = _reflection.GeneratedProtocolMessageType('SettingList', (_message.Message,), dict(
DESCRIPTOR = _SETTINGLIST,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.SettingList)
))
_sym_db.RegisterMessage(SettingList)
Setting = _reflection.GeneratedProtocolMessageType('Setting', (_message.Message,), dict(
DESCRIPTOR = _SETTING,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.Setting)
))
_sym_db.RegisterMessage(Setting)
GCodePrefix = _reflection.GeneratedProtocolMessageType('GCodePrefix', (_message.Message,), dict(
DESCRIPTOR = _GCODEPREFIX,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.GCodePrefix)
))
_sym_db.RegisterMessage(GCodePrefix)
SlicingFinished = _reflection.GeneratedProtocolMessageType('SlicingFinished', (_message.Message,), dict(
DESCRIPTOR = _SLICINGFINISHED,
__module__ = 'Cura_pb2'
# @@protoc_insertion_point(class_scope:cura.proto.SlicingFinished)
))
_sym_db.RegisterMessage(SlicingFinished)
# @@protoc_insertion_point(module_scope)

View file

@ -56,21 +56,27 @@ class ProcessSlicedObjectListJob(Job):
layer_data = LayerData.LayerData()
layer_count = 0
for object in self._message.objects:
layer_count += len(object.layers)
for i in range(self._message.repeatedMessageCount("objects")):
layer_count += self._message.getRepeatedMessage("objects", i).repeatedMessageCount("layers")
current_layer = 0
for object in self._message.objects:
for i in range(self._message.repeatedMessageCount("objects")):
object = self._message.getRepeatedMessage("objects", i)
try:
node = object_id_map[object.id]
except KeyError:
continue
for layer in object.layers:
for l in range(object.repeatedMessageCount("layers")):
layer = object.getRepeatedMessage("layers", l)
layer_data.addLayer(layer.id)
layer_data.setLayerHeight(layer.id, layer.height)
layer_data.setLayerThickness(layer.id, layer.thickness)
for polygon in layer.polygons:
for p in range(layer.repeatedMessageCount("polygons")):
polygon = layer.getRepeatedMessage("polygons", p)
points = numpy.fromstring(polygon.points, dtype="i8") # Convert bytearray to numpy array
points = points.reshape((-1,2)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly.
points = numpy.asarray(points, dtype=numpy.float32)
@ -83,8 +89,6 @@ class ProcessSlicedObjectListJob(Job):
layer_data.addPolygon(layer.id, polygon.type, points, polygon.line_width)
Job.yieldThread()
current_layer += 1
progress = (current_layer / layer_count) * 100
# TODO: Rebuild the layer data mesh once the layer has been processed.

View file

@ -14,8 +14,6 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from cura.OneAtATimeIterator import OneAtATimeIterator
from . import Cura_pb2
## Formatter class that handles token expansion in start/end gcod
class GcodeStartEndFormatter(Formatter):
def get_value(self, key, args, kwargs): # [CodeStyle: get_value is an overridden function from the Formatter class]
@ -81,20 +79,21 @@ class StartSliceJob(Job):
self._sendSettings(self._profile)
slice_message = Cura_pb2.Slice()
slice_message = self._socket.createMessage("cura.proto.Slice");
for group in object_groups:
group_message = slice_message.object_lists.add()
group_message = slice_message.addRepeatedMessage("object_lists");
for object in group:
mesh_data = object.getMeshData().getTransformed(object.getWorldTransformation())
obj = group_message.objects.add()
obj = group_message.addRepeatedMessage("objects");
obj.id = id(object)
verts = numpy.array(mesh_data.getVertices())
verts[:,[1,2]] = verts[:,[2,1]]
verts[:,1] *= -1
obj.vertices = verts.tostring()
obj.vertices = verts
self._handlePerObjectSettings(object, obj)
@ -115,13 +114,13 @@ class StartSliceJob(Job):
return str(value).encode("utf-8")
def _sendSettings(self, profile):
msg = Cura_pb2.SettingList()
msg = self._socket.createMessage("cura.proto.SettingList");
settings = profile.getAllSettingValues(include_machine = True)
start_gcode = settings["machine_start_gcode"]
settings["material_bed_temp_prepend"] = "{material_bed_temperature}" not in start_gcode
settings["material_print_temp_prepend"] = "{material_print_temperature}" not in start_gcode
for key, value in settings.items():
s = msg.settings.add()
s = msg.addRepeatedMessage("settings")
s.name = key
if key == "machine_start_gcode" or key == "machine_end_gcode":
s.value = self._expandGcodeTokens(key, value, settings)
@ -134,7 +133,7 @@ class StartSliceJob(Job):
profile = node.callDecoration("getProfile")
if profile:
for key, value in profile.getAllSettingValues().items():
setting = message.settings.add()
setting = message.addRepeatedMessage("settings")
setting.name = key
setting.value = str(value).encode()
@ -145,7 +144,7 @@ class StartSliceJob(Job):
return
for key, value in object_settings.items():
setting = message.settings.add()
setting = message.addRepeatedMessage("settings")
setting.name = key
setting.value = str(value).encode()

View file

@ -10,16 +10,13 @@ import UM 1.1 as UM
UM.Dialog
{
width: 350*Screen.devicePixelRatio;
minimumWidth: 350*Screen.devicePixelRatio;
maximumWidth: 350*Screen.devicePixelRatio;
width: 350 * Screen.devicePixelRatio;
minimumWidth: 350 * Screen.devicePixelRatio;
maximumWidth: 350 * Screen.devicePixelRatio;
height: 220*Screen.devicePixelRatio;
minimumHeight: 220*Screen.devicePixelRatio;
maximumHeight: 220*Screen.devicePixelRatio;
modality: Qt.Modal
height: 250 * Screen.devicePixelRatio;
minimumHeight: 250 * Screen.devicePixelRatio;
maximumHeight: 250 * Screen.devicePixelRatio;
title: catalog.i18nc("@title:window", "Convert Image...")
@ -38,7 +35,6 @@ UM.Dialog
text: catalog.i18nc("@info:tooltip","The maximum distance of each pixel from \"Base.\"")
Row {
width: parent.width
height: childrenRect.height
Text {
text: catalog.i18nc("@action:label","Height (mm)")
@ -62,7 +58,6 @@ UM.Dialog
text: catalog.i18nc("@info:tooltip","The base height from the build plate in millimeters.")
Row {
width: parent.width
height: childrenRect.height
Text {
text: catalog.i18nc("@action:label","Base (mm)")
@ -86,7 +81,6 @@ UM.Dialog
text: catalog.i18nc("@info:tooltip","The width in millimeters on the build plate.")
Row {
width: parent.width
height: childrenRect.height
Text {
text: catalog.i18nc("@action:label","Width (mm)")
@ -111,7 +105,6 @@ UM.Dialog
text: catalog.i18nc("@info:tooltip","The depth in millimeters on the build plate")
Row {
width: parent.width
height: childrenRect.height
Text {
text: catalog.i18nc("@action:label","Depth (mm)")
@ -135,7 +128,6 @@ UM.Dialog
text: catalog.i18nc("@info:tooltip","By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh.")
Row {
width: parent.width
height: childrenRect.height
//Empty label so 2 column layout works.
Text {
@ -159,7 +151,6 @@ UM.Dialog
text: catalog.i18nc("@info:tooltip","The amount of smoothing to apply to the image.")
Row {
width: parent.width
height: childrenRect.height
Text {
text: catalog.i18nc("@action:label","Smoothing")

View file

@ -167,12 +167,16 @@ class LayerView(View):
if new_max_layers > 0 and new_max_layers != self._old_max_layers:
self._max_layers = new_max_layers
self.maxLayersChanged.emit()
self._current_layer_num = self._max_layers
# This makes sure we update the current layer
self.setLayer(int(self._max_layers))
self.currentLayerNumChanged.emit()
# The qt slider has a bit of weird behavior that if the maxvalue needs to be changed first
# if it's the largest value. If we don't do this, we can have a slider block outside of the
# slider.
if new_max_layers > self._current_layer_num:
self.maxLayersChanged.emit()
self.setLayer(int(self._max_layers))
else:
self.setLayer(int(self._max_layers))
self.maxLayersChanged.emit()
maxLayersChanged = Signal()
currentLayerNumChanged = Signal()

View file

@ -24,16 +24,11 @@ class PerObjectSettingsModel(ListModel):
super().__init__(parent)
self._scene = Application.getInstance().getController().getScene()
self._root = self._scene.getRoot()
self._root.transformationChanged.connect(self._updatePositions)
self._root.childrenChanged.connect(self._updateNodes)
self._updateNodes(None)
self.addRoleName(self.IdRole,"id")
self.addRoleName(self.XRole,"x")
self.addRoleName(self.YRole,"y")
self.addRoleName(self.MaterialRole, "material")
self.addRoleName(self.ProfileRole, "profile")
self.addRoleName(self.SettingsRole, "settings")
self._updateModel()
@pyqtSlot("quint64", str)
def setObjectProfile(self, object_id, profile_name):
@ -72,27 +67,11 @@ class PerObjectSettingsModel(ListModel):
if len(node.callDecoration("getAllSettings")) == 0:
node.removeDecorator(SettingOverrideDecorator)
def _updatePositions(self, source):
camera = Application.getInstance().getController().getScene().getActiveCamera()
for node in BreadthFirstIterator(self._root):
if type(node) is not SceneNode or not node.getMeshData():
continue
projected_position = camera.project(node.getWorldPosition())
index = self.find("id", id(node))
self.setProperty(index, "x", float(projected_position[0]))
self.setProperty(index, "y", float(projected_position[1]))
def _updateNodes(self, source):
def _updateModel(self):
self.clear()
camera = Application.getInstance().getController().getScene().getActiveCamera()
for node in BreadthFirstIterator(self._root):
if type(node) is not SceneNode or not node.getMeshData() or not node.isSelectable():
continue
projected_position = camera.project(node.getWorldPosition())
node_profile = node.callDecoration("getProfile")
if not node_profile:
node_profile = "global"
@ -101,8 +80,6 @@ class PerObjectSettingsModel(ListModel):
self.appendItem({
"id": id(node),
"x": float(projected_position[0]),
"y": float(projected_position[1]),
"material": "",
"profile": node_profile,
"settings": SettingOverrideModel.SettingOverrideModel(node)

View file

@ -10,8 +10,7 @@ import UM 1.1 as UM
Item {
id: base;
property int currentIndex: UM.ActiveTool.properties.SelectedIndex;
property string printSequence: UM.ActiveTool.properties.PrintSequence;
property int currentIndex: UM.ActiveTool.properties.getValue("SelectedIndex")
UM.I18nCatalog { id: catalog; name: "cura"; }
@ -25,14 +24,6 @@ Item {
spacing: UM.Theme.sizes.default_margin.height;
Label {
width: UM.Theme.sizes.setting.width;
wrapMode: Text.Wrap;
text: catalog.i18nc("@label", "Per Object Settings behavior may be unexpected when 'Print sequence' is set to 'All at Once'.")
color: UM.Theme.colors.text;
visible: base.printSequence == "all_at_once"
}
UM.SettingItem {
id: profileSelection
@ -50,8 +41,8 @@ Item {
value: UM.ActiveTool.properties.getValue("Model").getItem(base.currentIndex).profile
onItemValueChanged: {
var item = UM.ActiveTool.properties.Model.getItem(base.currentIndex);
UM.ActiveTool.properties.Model.setObjectProfile(item.id, value)
var item = UM.ActiveTool.properties.getValue("Model").getItem(base.currentIndex);
UM.ActiveTool.properties.getValue("Model").setObjectProfile(item.id, value)
}
}
@ -202,6 +193,7 @@ Item {
width: parent.width;
height: childrenRect.height;
visible: model.visible && settingsColumn.height != 0 //If all children are hidden, the height is 0, and then the category header must also be hidden.
ToolButton {
id: categoryHeader;
@ -237,8 +229,6 @@ Item {
property variant settingsModel: model.settings;
visible: model.visible;
Column {
id: settingsColumn;
@ -272,10 +262,12 @@ Item {
x: model.depth * UM.Theme.sizes.default_margin.width;
text: model.name;
tooltip: model.description;
visible: !model.global_only
height: model.global_only ? 0 : undefined
onClicked: {
var object_id = UM.ActiveTool.properties.Model.getItem(base.currentIndex).id;
UM.ActiveTool.properties.Model.addSettingOverride(object_id, model.key);
var object_id = UM.ActiveTool.properties.getValue("Model").getItem(base.currentIndex).id;
UM.ActiveTool.properties.getValue("Model").addSettingOverride(object_id, model.key);
settingPickDialog.visible = false;
}

View file

@ -11,7 +11,7 @@ class PerObjectSettingsTool(Tool):
def __init__(self):
super().__init__()
self.setExposedProperties("Model", "SelectedIndex", "PrintSequence")
self.setExposedProperties("Model", "SelectedIndex")
def event(self, event):
return False
@ -22,8 +22,4 @@ class PerObjectSettingsTool(Tool):
def getSelectedIndex(self):
selected_object_id = id(Selection.getSelectedObject(0))
index = self.getModel().find("id", selected_object_id)
return index
def getPrintSequence(self):
settings = Application.getInstance().getMachineManager().getActiveProfile()
return settings.getSettingValue("print_sequence")
return index

View file

@ -1,910 +0,0 @@
# German translations for Cura 2.1
# 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.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-18 11:15+0100\n"
"PO-Revision-Date: 2016-01-26 11:51+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Rotate Tool"
msgstr "Drehungstool"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Rotate tool."
msgstr "Stellt das Drehungstool bereit."
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:19
#, fuzzy
msgctxt "@label"
msgid "Rotate"
msgstr "Drehen"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:20
#, fuzzy
msgctxt "@info:tooltip"
msgid "Rotate Object"
msgstr "Objekt drehen"
#: /home/tamara/2.1/Uranium/plugins/Tools/CameraTool/__init__.py:12
msgctxt "@label"
msgid "Camera Tool"
msgstr "Kameratool"
#: /home/tamara/2.1/Uranium/plugins/Tools/CameraTool/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the tool to manipulate the camera."
msgstr "Stellt das Tool zur Bedienung der Kamera bereit."
#: /home/tamara/2.1/Uranium/plugins/Tools/SelectionTool/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Selection Tool"
msgstr "Auswahltool"
#: /home/tamara/2.1/Uranium/plugins/Tools/SelectionTool/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Selection tool."
msgstr "Stellt das Auswahltool breit."
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Scale Tool"
msgstr "Skaliertool"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Scale tool."
msgstr "Stellt das Skaliertool bereit."
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:20
#, fuzzy
msgctxt "@label"
msgid "Scale"
msgstr "Skalieren"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:21
#, fuzzy
msgctxt "@info:tooltip"
msgid "Scale Object"
msgstr "Objekt skalieren"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Mirror Tool"
msgstr "Spiegelungstool"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Mirror tool."
msgstr "Stellt das Spiegelungstool bereit."
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:19
#, fuzzy
msgctxt "@label"
msgid "Mirror"
msgstr "Spiegeln"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:20
#, fuzzy
msgctxt "@info:tooltip"
msgid "Mirror Object"
msgstr "Objekt spiegeln"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Translate Tool"
msgstr "Übersetzungstool"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Translate tool."
msgstr "Stellt das Übersetzungstool bereit."
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:20
#, fuzzy
msgctxt "@action:button"
msgid "Translate"
msgstr "Übersetzen"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:21
#, fuzzy
msgctxt "@info:tooltip"
msgid "Translate Object"
msgstr "Objekt übersetzen"
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Simple View"
msgstr "Einfache Ansicht"
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides a simple solid mesh view."
msgstr "Bietet eine einfache, solide Netzansicht."
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:19
msgctxt "@item:inmenu"
msgid "Simple"
msgstr "Einfach"
#: /home/tamara/2.1/Uranium/plugins/Views/WireframeView/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Wireframe View"
msgstr "Drahtgitteransicht"
#: /home/tamara/2.1/Uranium/plugins/Views/WireframeView/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides a simple wireframe view"
msgstr "Bietet eine einfache Drahtgitteransicht"
#: /home/tamara/2.1/Uranium/plugins/ConsoleLogger/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Console Logger"
msgstr "Konsolen-Protokolleinrichtung"
#: /home/tamara/2.1/Uranium/plugins/ConsoleLogger/__init__.py:16
#: /home/tamara/2.1/Uranium/plugins/FileLogger/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Outputs log information to the console."
msgstr "Gibt Protokoll-Informationen an die Konsole weiter."
#: /home/tamara/2.1/Uranium/plugins/FileLogger/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "File Logger"
msgstr "Datei-Protokolleinrichtung"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:44
#, fuzzy
msgctxt "@item:inmenu"
msgid "Local File"
msgstr "Lokale Datei"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:45
#, fuzzy
msgctxt "@action:button"
msgid "Save to File"
msgstr "In Datei speichern"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:46
#, fuzzy
msgctxt "@info:tooltip"
msgid "Save to File"
msgstr "In Datei speichern"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:56
#, fuzzy
msgctxt "@title:window"
msgid "Save to File"
msgstr "In Datei speichern"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:101
msgctxt "@title:window"
msgid "File Already Exists"
msgstr "Datei bereits vorhanden"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:101
#, python-brace-format
msgctxt "@label"
msgid ""
"The file <filename>{0}</filename> already exists. Are you sure you want to "
"overwrite it?"
msgstr "Die Datei <filename>{0}</filename> ist bereits vorhanden. Soll die Datei wirklich überschrieben werden?"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:121
#, python-brace-format
msgctxt "@info:progress"
msgid "Saving to <filename>{0}</filename>"
msgstr "Wird gespeichert unter <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:129
#, python-brace-format
msgctxt "@info:status"
msgid "Permission denied when trying to save <filename>{0}</filename>"
msgstr "Beim Versuch <filename>{0}</filename> zu speichern, wird der Zugriff verweigert"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:132
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:154
#, python-brace-format
msgctxt "@info:status"
msgid "Could not save to <filename>{0}</filename>: <message>{1}</message>"
msgstr "Konnte nicht als <filename>{0}</filename> gespeichert werden: <message>{1}</message>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:148
#, python-brace-format
msgctxt "@info:status"
msgid "Saved to <filename>{0}</filename>"
msgstr "Wurde als <filename>{0}</filename> gespeichert"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:149
#, fuzzy
msgctxt "@action:button"
msgid "Open Folder"
msgstr "Ordner öffnen"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:149
#, fuzzy
msgctxt "@info:tooltip"
msgid "Open the folder containing the file"
msgstr "Öffnet den Ordner, der die gespeicherte Datei enthält"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Local File Output Device"
msgstr "Lokales Dateiausgabegerät"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/__init__.py:13
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Enables saving to local files"
msgstr "Ermöglicht das Speichern als lokale Dateien."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Wavefront OBJ Reader"
msgstr "Wavefront OBJ-Reader"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Makes it possbile to read Wavefront OBJ files."
msgstr "Ermöglicht das Lesen von Wavefront OBJ-Dateien."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:22
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:22
#, fuzzy
msgctxt "@item:inlistbox"
msgid "Wavefront OBJ File"
msgstr "Wavefront OBJ-Datei"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:12
msgctxt "@label"
msgid "STL Reader"
msgstr "STL-Reader"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for reading STL files."
msgstr "Bietet Unterstützung für das Lesen von STL-Dateien."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:21
#, fuzzy
msgctxt "@item:inlistbox"
msgid "STL File"
msgstr "STL-Datei"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "STL Writer"
msgstr "STL-Writer"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for writing STL files."
msgstr "Bietet Unterstützung für das Schreiben von STL-Dateien."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:25
#, fuzzy
msgctxt "@item:inlistbox"
msgid "STL File (Ascii)"
msgstr "STL-Datei (ASCII)"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:31
#, fuzzy
msgctxt "@item:inlistbox"
msgid "STL File (Binary)"
msgstr "STL-Datei (Binär)"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "3MF Writer"
msgstr "3MF-Writer"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for writing 3MF files."
msgstr "Bietet Unterstützung für das Schreiben von 3MF-Dateien."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:21
msgctxt "@item:inlistbox"
msgid "3MF file"
msgstr "3MF-Datei"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Wavefront OBJ Writer"
msgstr "Wavefront OBJ-Writer"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Makes it possbile to write Wavefront OBJ files."
msgstr "Ermöglicht das Schreiben von Wavefront OBJ-Dateien."
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:27
#, fuzzy
msgctxt "@item:inmenu"
msgid "Check for Updates"
msgstr "Nach Updates suchen"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:73
#, fuzzy
msgctxt "@info"
msgid "A new version is available!"
msgstr "Eine neue Version ist verfügbar!"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:74
msgctxt "@action:button"
msgid "Download"
msgstr "Download"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/__init__.py:12
msgctxt "@label"
msgid "Update Checker"
msgstr "Update-Prüfer"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Checks for updates of the software."
msgstr "Sucht nach Software-Updates."
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:91
#, fuzzy, python-brace-format
msgctxt ""
"@label Short days-hours-minutes format. {0} is days, {1} is hours, {2} is "
"minutes"
msgid "{0:0>2}d {1:0>2}h {2:0>2}min"
msgstr "{0:0>2}Tag {1:0>2}Stunde {2:0>2}Minute"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:93
#, fuzzy, python-brace-format
msgctxt "@label Short hours-minutes format. {0} is hours, {1} is minutes"
msgid "{0:0>2}h {1:0>2}min"
msgstr "{0:0>2}Stunde {1:0>2}Minute"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:96
#, fuzzy, python-brace-format
msgctxt ""
"@label Days-hours-minutes duration format. {0} is days, {1} is hours, {2} is "
"minutes"
msgid "{0} days {1} hours {2} minutes"
msgstr "{0} Tage {1} Stunden {2} Minuten"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:98
#, fuzzy, python-brace-format
msgctxt "@label Hours-minutes duration fromat. {0} is hours, {1} is minutes"
msgid "{0} hours {1} minutes"
msgstr "{0} Stunden {1} Minuten"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:100
#, fuzzy, python-brace-format
msgctxt "@label Minutes only duration format, {0} is minutes"
msgid "{0} minutes"
msgstr "{0} Minuten"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/SettingsFromCategoryModel.py:80
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MachineManagerProxy.py:104
#, python-brace-format
msgctxt ""
"@item:intext appended to customised profiles ({0} is old profile name)"
msgid "{0} (Customised)"
msgstr "{0} (Angepasst)"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MeshFileHandlerProxy.py:45
#, fuzzy, python-brace-format
msgctxt "@item:inlistbox"
msgid "All Supported Types ({0})"
msgstr "Alle unterstützten Typen ({0})"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MeshFileHandlerProxy.py:46
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:179
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:192
#, fuzzy
msgctxt "@item:inlistbox"
msgid "All Files (*)"
msgstr "Alle Dateien (*)"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:93
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to import profile from <filename>{0}</filename>: <message>{1}</"
"message>"
msgstr "Import des Profils aus Datei <filename>{0}</filename> fehlgeschlagen: <message>{1}</message>"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:106
#, python-brace-format
msgctxt "@info:status"
msgid "Profile was imported as {0}"
msgstr "Profil wurde importiert als {0}"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:108
#, python-brace-format
msgctxt "@info:status"
msgid "Successfully imported profile {0}"
msgstr "Profil erfolgreich importiert {0}"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:111
#, python-brace-format
msgctxt "@info:status"
msgid "Profile {0} has an unknown file type."
msgstr "Profil {0} hat einen unbekannten Dateityp."
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:155
#, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to export profile to <filename>{0}</filename>: <message>{1}</message>"
msgstr "Export des Profils nach <filename>{0}</filename> fehlgeschlagen: <message>{1}</message>"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:160
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to export profile to <filename>{0}</filename>: Writer plugin reported "
"failure."
msgstr "Export des Profils nach <filename>{0}</filename> fehlgeschlagen: Fehlermeldung von Writer-Plugin"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:163
#, python-brace-format
msgctxt "@info:status"
msgid "Exported profile to <filename>{0}</filename>"
msgstr "Profil wurde nach <filename>{0}</filename> exportiert"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:178
#, fuzzy
msgctxt "@item:inlistbox"
msgid "All supported files"
msgstr "Alle unterstützten Dateien"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:201
msgctxt "@item:inlistbox"
msgid "- Use Global Profile -"
msgstr "- Globales Profil verwenden -"
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:78
#, fuzzy
msgctxt "@info:progress"
msgid "Loading plugins..."
msgstr "Plugins werden geladen..."
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:82
#, fuzzy
msgctxt "@info:progress"
msgid "Loading machines..."
msgstr "Geräte werden geladen..."
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:86
#, fuzzy
msgctxt "@info:progress"
msgid "Loading preferences..."
msgstr "Einstellungen werden geladen..."
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:35
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid "Cannot open file type <filename>{0}</filename>"
msgstr "Kann Dateityp <filename>{0}</filename> nicht öffnen"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:44
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:66
#, python-brace-format
msgctxt "@info:status"
msgid "Failed to load <filename>{0}</filename>"
msgstr "Laden von <filename>{0}</filename> fehlgeschlagen"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:48
#, python-brace-format
msgctxt "@info:status"
msgid "Loading <filename>{0}</filename>"
msgstr "<filename>{0}</filename> wird geladen"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:94
#, python-format, python-brace-format
msgctxt "@info:status"
msgid "Auto scaled object to {0}% of original size"
msgstr "Automatische Skalierung des Objekts auf {0} % der Originalgröße"
#: /home/tamara/2.1/Uranium/UM/Settings/MachineDefinition.py:115
msgctxt "@label"
msgid "Unknown Manufacturer"
msgstr "Unbekannter Hersteller"
#: /home/tamara/2.1/Uranium/UM/Settings/MachineDefinition.py:116
msgctxt "@label"
msgid "Unknown Author"
msgstr "Unbekannter Autor"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:22
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:29
#, fuzzy
msgctxt "@action:button"
msgid "Reset"
msgstr "Zurücksetzen"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:39
msgctxt "@action:button"
msgid "Lay flat"
msgstr "Flach"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:55
#, fuzzy
msgctxt "@action:checkbox"
msgid "Snap Rotation"
msgstr "Snap-Drehung"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:42
#, fuzzy
msgctxt "@action:button"
msgid "Scale to Max"
msgstr "Auf Maximum skalieren"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:67
#, fuzzy
msgctxt "@option:check"
msgid "Snap Scaling"
msgstr "Snap-Skalierung"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:85
#, fuzzy
msgctxt "@option:check"
msgid "Uniform Scaling"
msgstr "Einheitliche Skalierung"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:20
msgctxt "@title:window"
msgid "Rename"
msgstr "Umbenennen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:49
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:222
msgctxt "@action:button"
msgid "Cancel"
msgstr "Abbrechen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:53
msgctxt "@action:button"
msgid "Ok"
msgstr "Ok"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ConfirmRemoveDialog.qml:16
msgctxt "@title:window"
msgid "Confirm Remove"
msgstr "Entfernen bestätigen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ConfirmRemoveDialog.qml:17
#, fuzzy
msgctxt "@label (%1 is object name)"
msgid "Are you sure you wish to remove %1? This cannot be undone!"
msgstr "Möchten Sie %1 wirklich entfernen? Dies kann nicht rückgängig gemacht werden!"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/MachinesPage.qml:12
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:116
msgctxt "@title:tab"
msgid "Printers"
msgstr "Drucker"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/MachinesPage.qml:32
msgctxt "@label"
msgid "Type"
msgstr "Typ"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:19
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:118
#, fuzzy
msgctxt "@title:tab"
msgid "Plugins"
msgstr "Plugins"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:90
#, fuzzy
msgctxt "@label"
msgid "No text available"
msgstr "Kein Text verfügbar"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:96
#, fuzzy
msgctxt "@title:window"
msgid "About %1"
msgstr "Über %1"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:128
#, fuzzy
msgctxt "@label"
msgid "Author:"
msgstr "Autor:"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:150
#, fuzzy
msgctxt "@label"
msgid "Version:"
msgstr "Version:"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:168
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:87
#, fuzzy
msgctxt "@action:button"
msgid "Close"
msgstr "Schließen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/SettingVisibilityPage.qml:11
#, fuzzy
msgctxt "@title:tab"
msgid "Setting Visibility"
msgstr "Sichtbarkeit einstellen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/SettingVisibilityPage.qml:29
msgctxt "@label:textbox"
msgid "Filter..."
msgstr "Filtern..."
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:14
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:117
msgctxt "@title:tab"
msgid "Profiles"
msgstr "Profile"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:22
msgctxt "@action:button"
msgid "Import"
msgstr "Import"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:37
#, fuzzy
msgctxt "@label"
msgid "Profile type"
msgstr "Profiltyp"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:38
msgctxt "@label"
msgid "Starter profile (protected)"
msgstr "Starterprofil (geschützt)"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:38
msgctxt "@label"
msgid "Custom profile"
msgstr "Benutzerdefiniertes Profil"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:57
msgctxt "@action:button"
msgid "Export"
msgstr "Export"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:83
#, fuzzy
msgctxt "@window:title"
msgid "Import Profile"
msgstr "Profil importieren"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:91
msgctxt "@title:window"
msgid "Import Profile"
msgstr "Profil importieren"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:118
msgctxt "@title:window"
msgid "Export Profile"
msgstr "Profil exportieren"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:47
msgctxt "@action:button"
msgid "Add"
msgstr "Hinzufügen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:54
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:52
#, fuzzy
msgctxt "@action:button"
msgid "Remove"
msgstr "Entfernen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:61
msgctxt "@action:button"
msgid "Rename"
msgstr "Umbenennen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:18
#, fuzzy
msgctxt "@title:window"
msgid "Preferences"
msgstr "Einstellungen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:80
#, fuzzy
msgctxt "@action:button"
msgid "Defaults"
msgstr "Standardeinstellungen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:114
#, fuzzy
msgctxt "@title:tab"
msgid "General"
msgstr "Allgemein"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:115
msgctxt "@title:tab"
msgid "Settings"
msgstr "Einstellungen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:179
msgctxt "@action:button"
msgid "Back"
msgstr "Zurück"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:195
#, fuzzy
msgctxt "@action:button"
msgid "Finish"
msgstr "Beenden"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:195
msgctxt "@action:button"
msgid "Next"
msgstr "Weiter"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingItem.qml:114
msgctxt "@info:tooltip"
msgid "Reset to Default"
msgstr "Auf Standard zurücksetzen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:80
msgctxt "@label"
msgid "{0} hidden setting uses a custom value"
msgid_plural "{0} hidden settings use custom values"
msgstr[0] "{0} ausgeblendete Einstellung verwendet einen benutzerdefinierten Wert"
msgstr[1] "{0} ausgeblendete Einstellungen verwenden benutzerdefinierte Werte"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:166
#, fuzzy
msgctxt "@action:menu"
msgid "Hide this setting"
msgstr "Diese Einstellung ausblenden"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:172
#, fuzzy
msgctxt "@action:menu"
msgid "Configure setting visiblity..."
msgstr "Sichtbarkeit der Einstellung wird konfiguriert..."
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:18
#, fuzzy
msgctxt "@title:tab"
msgid "Machine"
msgstr "Gerät"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:29
#, fuzzy
msgctxt "@label:listbox"
msgid "Active Machine:"
msgstr "Aktives Gerät:"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:112
#, fuzzy
msgctxt "@title:window"
msgid "Confirm Machine Deletion"
msgstr "Löschen des Geräts bestätigen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:114
#, fuzzy
msgctxt "@label"
msgid "Are you sure you wish to remove the machine?"
msgstr "Möchten Sie das Gerät wirklich entfernen?"
#~ msgctxt "@info:status"
#~ msgid "Loaded <filename>{0}</filename>"
#~ msgstr "<filename>{0}</filename> wurde geladen"
#~ msgctxt "@label"
#~ msgid "Per Object Settings Tool"
#~ msgstr "Werkzeug „Einstellungen für einzelne Objekte“"
#~ msgctxt "@info:whatsthis"
#~ msgid "Provides the Per Object Settings."
#~ msgstr ""
#~ "Stellt das Werkzeug „Einstellungen für einzelne Objekte“ zur Verfügung."
#~ msgctxt "@label"
#~ msgid "Per Object Settings"
#~ msgstr "Einstellungen für einzelne Objekte"
#~ msgctxt "@info:tooltip"
#~ msgid "Configure Per Object Settings"
#~ msgstr "Per Objekteinstellungen konfigurieren"
#~ msgctxt "@label"
#~ msgid "Mesh View"
#~ msgstr "Mesh-Ansicht"
#~ msgctxt "@item:inmenu"
#~ msgid "Solid"
#~ msgstr "Solide"
#~ msgctxt "@title:tab"
#~ msgid "Machines"
#~ msgstr "Maschinen"
#~ msgctxt "@label"
#~ msgid "Variant"
#~ msgstr "Variante"
#~ msgctxt "@item:inlistbox"
#~ msgid "Cura Profiles (*.curaprofile)"
#~ msgstr "Cura-Profile (*.curaprofile)"
#~ msgctxt "@action:button"
#~ msgid "Customize Settings"
#~ msgstr "Einstellungen anpassen"
#~ msgctxt "@info:tooltip"
#~ msgid "Customise settings for this object"
#~ msgstr "Einstellungen für dieses Objekt anpassen"
#~ msgctxt "@title:window"
#~ msgid "Pick a Setting to Customize"
#~ msgstr "Wähle eine Einstellung zum Anpassen"
#~ msgctxt "@info:tooltip"
#~ msgid "Reset the rotation of the current selection."
#~ msgstr "Drehung der aktuellen Auswahl zurücksetzen."
#~ msgctxt "@info:tooltip"
#~ msgid "Reset the scaling of the current selection."
#~ msgstr "Skalierung der aktuellen Auswahl zurücksetzen."
#~ msgctxt "@info:tooltip"
#~ msgid "Scale to maximum size"
#~ msgstr "Auf Maximalgröße skalieren"
#~ msgctxt "OBJ Writer file format"
#~ msgid "Wavefront OBJ File"
#~ msgstr "Wavefront OBJ-Datei"
#~ msgctxt "Loading mesh message, {0} is file name"
#~ msgid "Loading {0}"
#~ msgstr "Wird geladen {0}"
#~ msgctxt "Finished loading mesh message, {0} is file name"
#~ msgid "Loaded {0}"
#~ msgstr "Geladen {0}"
#~ msgctxt "Splash screen message"
#~ msgid "Loading translations..."
#~ msgstr "Übersetzungen werden geladen..."

1320
resources/i18n/es/cura.po Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,863 +0,0 @@
# Finnish translations for Cura 2.1
# 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.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-18 11:15+0100\n"
"PO-Revision-Date: 2016-01-26 13:21+0100\n"
"Last-Translator: Tapio <info@tapimex.fi>\n"
"Language-Team: \n"
"Language: fi_FI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.5\n"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:12
msgctxt "@label"
msgid "Rotate Tool"
msgstr "Pyöritystyökalu"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:15
msgctxt "@info:whatsthis"
msgid "Provides the Rotate tool."
msgstr "Näyttää pyöritystyökalun."
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:19
msgctxt "@label"
msgid "Rotate"
msgstr "Pyöritys"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:20
msgctxt "@info:tooltip"
msgid "Rotate Object"
msgstr "Pyörittää kappaletta"
#: /home/tamara/2.1/Uranium/plugins/Tools/CameraTool/__init__.py:12
msgctxt "@label"
msgid "Camera Tool"
msgstr "Kameratyökalu"
#: /home/tamara/2.1/Uranium/plugins/Tools/CameraTool/__init__.py:15
msgctxt "@info:whatsthis"
msgid "Provides the tool to manipulate the camera."
msgstr "Työkalu kameran käsittelyyn."
#: /home/tamara/2.1/Uranium/plugins/Tools/SelectionTool/__init__.py:13
msgctxt "@label"
msgid "Selection Tool"
msgstr "Valintatyökalu"
#: /home/tamara/2.1/Uranium/plugins/Tools/SelectionTool/__init__.py:16
msgctxt "@info:whatsthis"
msgid "Provides the Selection tool."
msgstr "Näyttää valintatyökalun."
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:13
msgctxt "@label"
msgid "Scale Tool"
msgstr "Skaalaustyökalu"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:16
msgctxt "@info:whatsthis"
msgid "Provides the Scale tool."
msgstr "Näyttää skaalaustyökalun."
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:20
msgctxt "@label"
msgid "Scale"
msgstr "Skaalaus"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:21
msgctxt "@info:tooltip"
msgid "Scale Object"
msgstr "Skaalaa kappaletta"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:12
msgctxt "@label"
msgid "Mirror Tool"
msgstr "Peilityökalu"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:15
msgctxt "@info:whatsthis"
msgid "Provides the Mirror tool."
msgstr "Näyttää peilaustyökalun."
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:19
msgctxt "@label"
msgid "Mirror"
msgstr "Peilaus"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:20
msgctxt "@info:tooltip"
msgid "Mirror Object"
msgstr "Peilaa kappaleen"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:13
msgctxt "@label"
msgid "Translate Tool"
msgstr "Käännöstyökalu"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:16
msgctxt "@info:whatsthis"
msgid "Provides the Translate tool."
msgstr "Näyttää käännöstyökalun."
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:20
msgctxt "@action:button"
msgid "Translate"
msgstr "Käännä"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:21
msgctxt "@info:tooltip"
msgid "Translate Object"
msgstr "Kääntää kappaleen tiedot"
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Simple View"
msgstr "Yksinkertainen näkymä"
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides a simple solid mesh view."
msgstr "Näyttää yksinkertaisen kiinteän verkkonäkymän."
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:19
msgctxt "@item:inmenu"
msgid "Simple"
msgstr "Yksinkertainen"
#: /home/tamara/2.1/Uranium/plugins/Views/WireframeView/__init__.py:13
msgctxt "@label"
msgid "Wireframe View"
msgstr "Rautalankanäkymä"
#: /home/tamara/2.1/Uranium/plugins/Views/WireframeView/__init__.py:16
msgctxt "@info:whatsthis"
msgid "Provides a simple wireframe view"
msgstr "Näyttää yksinkertaisen rautalankanäkymän"
#: /home/tamara/2.1/Uranium/plugins/ConsoleLogger/__init__.py:13
msgctxt "@label"
msgid "Console Logger"
msgstr "Konsolin tiedonkeruu"
#: /home/tamara/2.1/Uranium/plugins/ConsoleLogger/__init__.py:16
#: /home/tamara/2.1/Uranium/plugins/FileLogger/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Outputs log information to the console."
msgstr "Lähettää lokitiedot konsoliin."
#: /home/tamara/2.1/Uranium/plugins/FileLogger/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "File Logger"
msgstr "Tiedonkeruuohjelma"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:44
msgctxt "@item:inmenu"
msgid "Local File"
msgstr "Paikallinen tiedosto"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:45
msgctxt "@action:button"
msgid "Save to File"
msgstr "Tallenna tiedostoon"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:46
msgctxt "@info:tooltip"
msgid "Save to File"
msgstr "Tallenna tiedostoon"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:56
msgctxt "@title:window"
msgid "Save to File"
msgstr "Tallenna tiedostoon"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:101
msgctxt "@title:window"
msgid "File Already Exists"
msgstr "Tiedosto on jo olemassa"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:101
#, python-brace-format
msgctxt "@label"
msgid ""
"The file <filename>{0}</filename> already exists. Are you sure you want to "
"overwrite it?"
msgstr "Tiedosto <filename>{0}</filename> on jo olemassa. Haluatko varmasti kirjoittaa sen päälle?"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:121
#, python-brace-format
msgctxt "@info:progress"
msgid "Saving to <filename>{0}</filename>"
msgstr "Tallennetaan tiedostoon <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:129
#, python-brace-format
msgctxt "@info:status"
msgid "Permission denied when trying to save <filename>{0}</filename>"
msgstr "Lupa evätty yritettäessä tallentaa tiedostoon <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:132
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:154
#, python-brace-format
msgctxt "@info:status"
msgid "Could not save to <filename>{0}</filename>: <message>{1}</message>"
msgstr "Ei voitu tallentaa tiedostoon <filename>{0}</filename>: <message>{1}</message>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:148
#, python-brace-format
msgctxt "@info:status"
msgid "Saved to <filename>{0}</filename>"
msgstr "Tallennettu tiedostoon <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:149
msgctxt "@action:button"
msgid "Open Folder"
msgstr "Avaa kansio"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:149
msgctxt "@info:tooltip"
msgid "Open the folder containing the file"
msgstr "Avaa tiedoston sisältävän kansion"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/__init__.py:12
msgctxt "@label"
msgid "Local File Output Device"
msgstr "Paikallisen tiedoston tulostusväline"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/__init__.py:13
msgctxt "@info:whatsthis"
msgid "Enables saving to local files"
msgstr "Mahdollistaa tallennuksen paikallisiin tiedostoihin"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:13
msgctxt "@label"
msgid "Wavefront OBJ Reader"
msgstr "Wavefront OBJ -lukija"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Makes it possbile to read Wavefront OBJ files."
msgstr "Mahdollistaa Wavefront OBJ -tiedostojen lukemisen."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:22
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:22
#, fuzzy
msgctxt "@item:inlistbox"
msgid "Wavefront OBJ File"
msgstr "Wavefront OBJ -tiedosto"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:12
msgctxt "@label"
msgid "STL Reader"
msgstr "STL-lukija"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for reading STL files."
msgstr "Tukee STL-tiedostojen lukemista."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:21
#, fuzzy
msgctxt "@item:inlistbox"
msgid "STL File"
msgstr "STL-tiedosto"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:13
msgctxt "@label"
msgid "STL Writer"
msgstr "STL-kirjoitin"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for writing STL files."
msgstr "Tukee STL-tiedostojen kirjoittamista."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:25
msgctxt "@item:inlistbox"
msgid "STL File (Ascii)"
msgstr "STL-tiedosto (ascii)"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:31
msgctxt "@item:inlistbox"
msgid "STL File (Binary)"
msgstr "STL-tiedosto (binaari)"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "3MF Writer"
msgstr "3MF-kirjoitin"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for writing 3MF files."
msgstr "Tukee 3MF-tiedostojen kirjoittamista."
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:21
msgctxt "@item:inlistbox"
msgid "3MF file"
msgstr "3MF-tiedosto"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:13
msgctxt "@label"
msgid "Wavefront OBJ Writer"
msgstr "Wavefront OBJ -kirjoitin"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Makes it possbile to write Wavefront OBJ files."
msgstr "Mahdollistaa Wavefront OBJ -tiedostojen kirjoittamisen."
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:27
msgctxt "@item:inmenu"
msgid "Check for Updates"
msgstr "Tarkista päivitykset"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:73
msgctxt "@info"
msgid "A new version is available!"
msgstr "Uusi versio on saatavilla!"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:74
msgctxt "@action:button"
msgid "Download"
msgstr "Lataa"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/__init__.py:12
msgctxt "@label"
msgid "Update Checker"
msgstr "Päivitysten tarkistin"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/__init__.py:15
msgctxt "@info:whatsthis"
msgid "Checks for updates of the software."
msgstr "Tarkistaa, onko ohjelmistopäivityksiä saatavilla."
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:91
#, python-brace-format
msgctxt ""
"@label Short days-hours-minutes format. {0} is days, {1} is hours, {2} is "
"minutes"
msgid "{0:0>2}d {1:0>2}h {2:0>2}min"
msgstr "{0:0>2} p {1:0>2} h {2:0>2} min"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:93
#, python-brace-format
msgctxt "@label Short hours-minutes format. {0} is hours, {1} is minutes"
msgid "{0:0>2}h {1:0>2}min"
msgstr "{0:0>2} h {1:0>2} min"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:96
#, fuzzy, python-brace-format
msgctxt ""
"@label Days-hours-minutes duration format. {0} is days, {1} is hours, {2} is "
"minutes"
msgid "{0} days {1} hours {2} minutes"
msgstr "{0} päivää {1} tuntia {2} minuuttia"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:98
#, fuzzy, python-brace-format
msgctxt "@label Hours-minutes duration fromat. {0} is hours, {1} is minutes"
msgid "{0} hours {1} minutes"
msgstr "{0} tuntia {1} minuuttia"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:100
#, fuzzy, python-brace-format
msgctxt "@label Minutes only duration format, {0} is minutes"
msgid "{0} minutes"
msgstr "{0} minuuttia"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/SettingsFromCategoryModel.py:80
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MachineManagerProxy.py:104
#, python-brace-format
msgctxt ""
"@item:intext appended to customised profiles ({0} is old profile name)"
msgid "{0} (Customised)"
msgstr "{0} (mukautettu)"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MeshFileHandlerProxy.py:45
#, fuzzy, python-brace-format
msgctxt "@item:inlistbox"
msgid "All Supported Types ({0})"
msgstr "Kaikki tuetut tyypit ({0})"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MeshFileHandlerProxy.py:46
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:179
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:192
#, fuzzy
msgctxt "@item:inlistbox"
msgid "All Files (*)"
msgstr "Kaikki tiedostot (*)"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:93
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to import profile from <filename>{0}</filename>: <message>{1}</"
"message>"
msgstr "Profiilin tuonti epäonnistui tiedostosta <filename>{0}</filename>: <message>{1}</message>"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:106
#, python-brace-format
msgctxt "@info:status"
msgid "Profile was imported as {0}"
msgstr "Profiili tuotiin nimellä {0}"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:108
#, python-brace-format
msgctxt "@info:status"
msgid "Successfully imported profile {0}"
msgstr "Onnistuneesti tuotu profiili {0}"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:111
#, python-brace-format
msgctxt "@info:status"
msgid "Profile {0} has an unknown file type."
msgstr "Profiililla {0} on tuntematon tiedostotyyppi."
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:155
#, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to export profile to <filename>{0}</filename>: <message>{1}</message>"
msgstr "Profiilin vienti epäonnistui tiedostoon <filename>{0}</filename>: <message>{1}</message>"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:160
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to export profile to <filename>{0}</filename>: Writer plugin reported "
"failure."
msgstr "Profiilin vienti epäonnistui tiedostoon <filename>{0}</filename>: Kirjoitin-lisäosa ilmoitti virheestä."
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:163
#, python-brace-format
msgctxt "@info:status"
msgid "Exported profile to <filename>{0}</filename>"
msgstr "Profiili viety tiedostoon <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:178
#, fuzzy
msgctxt "@item:inlistbox"
msgid "All supported files"
msgstr "Kaikki tuetut tiedostot"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:201
msgctxt "@item:inlistbox"
msgid "- Use Global Profile -"
msgstr "- Käytä yleisprofiilia -"
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:78
#, fuzzy
msgctxt "@info:progress"
msgid "Loading plugins..."
msgstr "Ladataan lisäosia..."
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:82
#, fuzzy
msgctxt "@info:progress"
msgid "Loading machines..."
msgstr "Ladataan laitteita..."
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:86
msgctxt "@info:progress"
msgid "Loading preferences..."
msgstr "Ladataan lisäasetuksia..."
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:35
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid "Cannot open file type <filename>{0}</filename>"
msgstr "Ei voida avata tiedostotyyppiä <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:44
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:66
#, python-brace-format
msgctxt "@info:status"
msgid "Failed to load <filename>{0}</filename>"
msgstr "Tiedoston <filename>{0}</filename> lataaminen epäonnistui"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:48
#, python-brace-format
msgctxt "@info:status"
msgid "Loading <filename>{0}</filename>"
msgstr "Ladataan <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:94
#, python-format, python-brace-format
msgctxt "@info:status"
msgid "Auto scaled object to {0}% of original size"
msgstr "Kappale skaalattu automaattisesti {0} %:iin alkuperäisestä koosta"
#: /home/tamara/2.1/Uranium/UM/Settings/MachineDefinition.py:115
msgctxt "@label"
msgid "Unknown Manufacturer"
msgstr "Tuntematon valmistaja"
#: /home/tamara/2.1/Uranium/UM/Settings/MachineDefinition.py:116
msgctxt "@label"
msgid "Unknown Author"
msgstr "Tuntematon tekijä"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:22
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:29
#, fuzzy
msgctxt "@action:button"
msgid "Reset"
msgstr "Palauta"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:39
msgctxt "@action:button"
msgid "Lay flat"
msgstr "Aseta latteaksi"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:55
#, fuzzy
msgctxt "@action:checkbox"
msgid "Snap Rotation"
msgstr "Kohdista pyöritys"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:42
#, fuzzy
msgctxt "@action:button"
msgid "Scale to Max"
msgstr "Skaalaa maksimiin"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:67
#, fuzzy
msgctxt "@option:check"
msgid "Snap Scaling"
msgstr "Kohdista skaalaus"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:85
#, fuzzy
msgctxt "@option:check"
msgid "Uniform Scaling"
msgstr "Tasainen skaalaus"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:20
msgctxt "@title:window"
msgid "Rename"
msgstr "Nimeä uudelleen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:49
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:222
msgctxt "@action:button"
msgid "Cancel"
msgstr "Peruuta"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:53
msgctxt "@action:button"
msgid "Ok"
msgstr "OK"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ConfirmRemoveDialog.qml:16
msgctxt "@title:window"
msgid "Confirm Remove"
msgstr "Vahvista poisto"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ConfirmRemoveDialog.qml:17
msgctxt "@label (%1 is object name)"
msgid "Are you sure you wish to remove %1? This cannot be undone!"
msgstr "Haluatko varmasti poistaa kappaleen %1? Tätä ei voida kumota!"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/MachinesPage.qml:12
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:116
msgctxt "@title:tab"
msgid "Printers"
msgstr "Tulostimet"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/MachinesPage.qml:32
msgctxt "@label"
msgid "Type"
msgstr "Tyyppi"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:19
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:118
#, fuzzy
msgctxt "@title:tab"
msgid "Plugins"
msgstr "Lisäosat"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:90
#, fuzzy
msgctxt "@label"
msgid "No text available"
msgstr "Ei tekstiä saatavilla"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:96
msgctxt "@title:window"
msgid "About %1"
msgstr "Tietoja: %1"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:128
#, fuzzy
msgctxt "@label"
msgid "Author:"
msgstr "Tekijä:"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:150
#, fuzzy
msgctxt "@label"
msgid "Version:"
msgstr "Versio:"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:168
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:87
msgctxt "@action:button"
msgid "Close"
msgstr "Sulje"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/SettingVisibilityPage.qml:11
msgctxt "@title:tab"
msgid "Setting Visibility"
msgstr "Näkyvyyden asettaminen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/SettingVisibilityPage.qml:29
msgctxt "@label:textbox"
msgid "Filter..."
msgstr "Suodatin..."
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:14
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:117
msgctxt "@title:tab"
msgid "Profiles"
msgstr "Profiilit"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:22
msgctxt "@action:button"
msgid "Import"
msgstr "Tuo"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:37
#, fuzzy
msgctxt "@label"
msgid "Profile type"
msgstr "Profiilin tyyppi"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:38
msgctxt "@label"
msgid "Starter profile (protected)"
msgstr "Käynnistysprofiili (suojattu)"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:38
msgctxt "@label"
msgid "Custom profile"
msgstr "Mukautettu profiili"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:57
msgctxt "@action:button"
msgid "Export"
msgstr "Vie"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:83
#, fuzzy
msgctxt "@window:title"
msgid "Import Profile"
msgstr "Profiilin tuonti"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:91
msgctxt "@title:window"
msgid "Import Profile"
msgstr "Profiilin tuonti"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:118
msgctxt "@title:window"
msgid "Export Profile"
msgstr "Profiilin vienti"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:47
msgctxt "@action:button"
msgid "Add"
msgstr "Lisää"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:54
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:52
msgctxt "@action:button"
msgid "Remove"
msgstr "Poista"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:61
msgctxt "@action:button"
msgid "Rename"
msgstr "Nimeä uudelleen"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:18
msgctxt "@title:window"
msgid "Preferences"
msgstr "Lisäasetukset"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:80
msgctxt "@action:button"
msgid "Defaults"
msgstr "Oletusarvot"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:114
msgctxt "@title:tab"
msgid "General"
msgstr "Yleiset"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:115
msgctxt "@title:tab"
msgid "Settings"
msgstr "Asetukset"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:179
msgctxt "@action:button"
msgid "Back"
msgstr "Takaisin"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:195
msgctxt "@action:button"
msgid "Finish"
msgstr "Lopeta"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:195
msgctxt "@action:button"
msgid "Next"
msgstr "Seuraava"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingItem.qml:114
msgctxt "@info:tooltip"
msgid "Reset to Default"
msgstr "Palauta oletukset"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:80
msgctxt "@label"
msgid "{0} hidden setting uses a custom value"
msgid_plural "{0} hidden settings use custom values"
msgstr[0] "{0} piilotettu asetus käyttää mukautettua arvoa"
msgstr[1] "{0} piilotettua asetusta käyttää mukautettuja arvoja"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:166
#, fuzzy
msgctxt "@action:menu"
msgid "Hide this setting"
msgstr "Piilota tämä asetus"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:172
#, fuzzy
msgctxt "@action:menu"
msgid "Configure setting visiblity..."
msgstr "Määritä asetusten näkyvyys..."
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:18
#, fuzzy
msgctxt "@title:tab"
msgid "Machine"
msgstr "Laite"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:29
#, fuzzy
msgctxt "@label:listbox"
msgid "Active Machine:"
msgstr "Aktiivinen laite:"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:112
#, fuzzy
msgctxt "@title:window"
msgid "Confirm Machine Deletion"
msgstr "Vahvista laitteen poisto"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:114
#, fuzzy
msgctxt "@label"
msgid "Are you sure you wish to remove the machine?"
msgstr "Haluatko varmasti poistaa laitteen?"
#~ msgctxt "@info:status"
#~ msgid "Loaded <filename>{0}</filename>"
#~ msgstr "Ladattu <filename>{0}</filename>"
#~ msgctxt "@label"
#~ msgid "Per Object Settings Tool"
#~ msgstr "Kappalekohtaisten asetusten työkalu"
#~ msgctxt "@info:whatsthis"
#~ msgid "Provides the Per Object Settings."
#~ msgstr "Näyttää kappalekohtaiset asetukset."
#~ msgctxt "@label"
#~ msgid "Per Object Settings"
#~ msgstr "Kappalekohtaiset asetukset"
#~ msgctxt "@info:tooltip"
#~ msgid "Configure Per Object Settings"
#~ msgstr "Määrittää kappalekohtaiset asetukset"
#~ msgctxt "@label"
#~ msgid "Mesh View"
#~ msgstr "Verkkonäkymä"
#~ msgctxt "@item:inmenu"
#~ msgid "Solid"
#~ msgstr "Kiinteä"
#~ msgctxt "@title:tab"
#~ msgid "Machines"
#~ msgstr "Laitteet"
#~ msgctxt "@label"
#~ msgid "Variant"
#~ msgstr "Variantti"
#~ msgctxt "@item:inlistbox"
#~ msgid "Cura Profiles (*.curaprofile)"
#~ msgstr "Cura-profiilit (*.curaprofile)"
#~ msgctxt "@action:button"
#~ msgid "Customize Settings"
#~ msgstr "Mukauta asetuksia"
#~ msgctxt "@info:tooltip"
#~ msgid "Customise settings for this object"
#~ msgstr "Mukauta asetuksia tälle kappaleelle"
#~ msgctxt "@title:window"
#~ msgid "Pick a Setting to Customize"
#~ msgstr "Poimi mukautettava asetus"
#~ msgctxt "@info:tooltip"
#~ msgid "Reset the rotation of the current selection."
#~ msgstr "Palauta nykyisen valinnan pyöritys takaisin."
#~ msgctxt "@info:tooltip"
#~ msgid "Reset the scaling of the current selection."
#~ msgstr "Palauta nykyisen valinnan skaalaus takaisin."
#~ msgctxt "@info:tooltip"
#~ msgid "Scale to maximum size"
#~ msgstr "Skaalaa maksimikokoon"
#~ msgctxt "OBJ Writer file format"
#~ msgid "Wavefront OBJ File"
#~ msgstr "Wavefront OBJ-tiedosto"
#~ msgctxt "Loading mesh message, {0} is file name"
#~ msgid "Loading {0}"
#~ msgstr "Ladataan {0}"
#~ msgctxt "Finished loading mesh message, {0} is file name"
#~ msgid "Loaded {0}"
#~ msgstr "Ladattu {0}"
#~ msgctxt "Splash screen message"
#~ msgid "Loading translations..."
#~ msgstr "Ladataan käännöksiä..."

View file

@ -1,910 +0,0 @@
# German translations for Cura 2.1
# 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.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-18 11:15+0100\n"
"PO-Revision-Date: 2016-01-27 08:41+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Rotate Tool"
msgstr "Outil de rotation"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Rotate tool."
msgstr "Accès à l'outil de rotation"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:19
#, fuzzy
msgctxt "@label"
msgid "Rotate"
msgstr "Pivoter"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/__init__.py:20
#, fuzzy
msgctxt "@info:tooltip"
msgid "Rotate Object"
msgstr "Pivoter lobjet"
#: /home/tamara/2.1/Uranium/plugins/Tools/CameraTool/__init__.py:12
msgctxt "@label"
msgid "Camera Tool"
msgstr "Caméra"
#: /home/tamara/2.1/Uranium/plugins/Tools/CameraTool/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the tool to manipulate the camera."
msgstr "Accès à l'outil de manipulation de la caméra"
#: /home/tamara/2.1/Uranium/plugins/Tools/SelectionTool/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Selection Tool"
msgstr "Outil de sélection"
#: /home/tamara/2.1/Uranium/plugins/Tools/SelectionTool/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Selection tool."
msgstr "Accès à l'outil de sélection."
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Scale Tool"
msgstr "Outil de mise à léchelle"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Scale tool."
msgstr "Accès à l'outil de mise à l'échelle"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:20
#, fuzzy
msgctxt "@label"
msgid "Scale"
msgstr "Mettre à léchelle"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/__init__.py:21
#, fuzzy
msgctxt "@info:tooltip"
msgid "Scale Object"
msgstr "Mettre lobjet à léchelle"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Mirror Tool"
msgstr "Outil de symétrie"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Mirror tool."
msgstr "Accès à l'outil de symétrie"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:19
#, fuzzy
msgctxt "@label"
msgid "Mirror"
msgstr "Symétrie"
#: /home/tamara/2.1/Uranium/plugins/Tools/MirrorTool/__init__.py:20
#, fuzzy
msgctxt "@info:tooltip"
msgid "Mirror Object"
msgstr "Effectuer une symétrie"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Translate Tool"
msgstr "Outil de positionnement"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides the Translate tool."
msgstr "Accès à l'outil de positionnement"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:20
#, fuzzy
msgctxt "@action:button"
msgid "Translate"
msgstr "Déplacer"
#: /home/tamara/2.1/Uranium/plugins/Tools/TranslateTool/__init__.py:21
#, fuzzy
msgctxt "@info:tooltip"
msgid "Translate Object"
msgstr "Déplacer l'objet"
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Simple View"
msgstr "Vue simple"
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides a simple solid mesh view."
msgstr "Affiche une vue en maille solide simple."
#: /home/tamara/2.1/Uranium/plugins/Views/SimpleView/__init__.py:19
msgctxt "@item:inmenu"
msgid "Simple"
msgstr "Simple"
#: /home/tamara/2.1/Uranium/plugins/Views/WireframeView/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Wireframe View"
msgstr "Vue filaire"
#: /home/tamara/2.1/Uranium/plugins/Views/WireframeView/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides a simple wireframe view"
msgstr "Fournit une vue filaire simple"
#: /home/tamara/2.1/Uranium/plugins/ConsoleLogger/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Console Logger"
msgstr "Journal d'évènements en console"
#: /home/tamara/2.1/Uranium/plugins/ConsoleLogger/__init__.py:16
#: /home/tamara/2.1/Uranium/plugins/FileLogger/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Outputs log information to the console."
msgstr "Affiche les journaux d'évènements (log) dans la console."
#: /home/tamara/2.1/Uranium/plugins/FileLogger/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "File Logger"
msgstr "Journal d'évènements dans un fichier"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:44
#, fuzzy
msgctxt "@item:inmenu"
msgid "Local File"
msgstr "Fichier local"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:45
#, fuzzy
msgctxt "@action:button"
msgid "Save to File"
msgstr "Enregistrer sous Fichier"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:46
#, fuzzy
msgctxt "@info:tooltip"
msgid "Save to File"
msgstr "Enregistrer sous Fichier"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:56
#, fuzzy
msgctxt "@title:window"
msgid "Save to File"
msgstr "Enregistrer sous Fichier"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:101
msgctxt "@title:window"
msgid "File Already Exists"
msgstr "Le fichier existe déjà"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:101
#, python-brace-format
msgctxt "@label"
msgid ""
"The file <filename>{0}</filename> already exists. Are you sure you want to "
"overwrite it?"
msgstr "Le fichier <filename>{0}</filename> existe déjà. Êtes vous sûr de vouloir le remplacer ?"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:121
#, python-brace-format
msgctxt "@info:progress"
msgid "Saving to <filename>{0}</filename>"
msgstr "Enregistrement vers <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:129
#, python-brace-format
msgctxt "@info:status"
msgid "Permission denied when trying to save <filename>{0}</filename>"
msgstr "Permission refusée lors de l'essai d'enregistrement de <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:132
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:154
#, python-brace-format
msgctxt "@info:status"
msgid "Could not save to <filename>{0}</filename>: <message>{1}</message>"
msgstr "Impossible d'enregistrer <filename>{0}</filename> : <message>{1}</message>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:148
#, python-brace-format
msgctxt "@info:status"
msgid "Saved to <filename>{0}</filename>"
msgstr "Enregistré vers <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:149
#, fuzzy
msgctxt "@action:button"
msgid "Open Folder"
msgstr "Ouvrir le dossier"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/LocalFileOutputDevicePlugin.py:149
#, fuzzy
msgctxt "@info:tooltip"
msgid "Open the folder containing the file"
msgstr "Ouvrir le dossier contenant le fichier"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "Local File Output Device"
msgstr "Fichier local Périphérique de sortie"
#: /home/tamara/2.1/Uranium/plugins/LocalFileOutputDevice/__init__.py:13
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Enables saving to local files"
msgstr "Active la sauvegarde vers des fichiers locaux"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Wavefront OBJ Reader"
msgstr "Lecteur OBJ Wavefront"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Makes it possbile to read Wavefront OBJ files."
msgstr "Permet la lecture de fichiers OBJ Wavefront"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJReader/__init__.py:22
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:22
#, fuzzy
msgctxt "@item:inlistbox"
msgid "Wavefront OBJ File"
msgstr "Fichier OBJ Wavefront"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:12
msgctxt "@label"
msgid "STL Reader"
msgstr "Lecteur de fichiers STL"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for reading STL files."
msgstr "Permet la lecture de fichiers STL"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLReader/__init__.py:21
#, fuzzy
msgctxt "@item:inlistbox"
msgid "STL File"
msgstr "Fichier STL"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "STL Writer"
msgstr "Générateur STL"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for writing STL files."
msgstr "Permet l'écriture de fichiers STL"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:25
#, fuzzy
msgctxt "@item:inlistbox"
msgid "STL File (Ascii)"
msgstr "Fichier STL (ASCII)"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/STLWriter/__init__.py:31
#, fuzzy
msgctxt "@item:inlistbox"
msgid "STL File (Binary)"
msgstr "Fichier STL (Binaire)"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:12
#, fuzzy
msgctxt "@label"
msgid "3MF Writer"
msgstr "Générateur 3MF"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Provides support for writing 3MF files."
msgstr "Permet l'écriture de fichiers 3MF"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/3MFWriter/__init__.py:21
msgctxt "@item:inlistbox"
msgid "3MF file"
msgstr "Fichier 3MF"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:13
#, fuzzy
msgctxt "@label"
msgid "Wavefront OBJ Writer"
msgstr "Générateur OBJ Wavefront"
#: /home/tamara/2.1/Uranium/plugins/FileHandlers/OBJWriter/__init__.py:16
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Makes it possbile to write Wavefront OBJ files."
msgstr "Permet l'écriture de fichiers OBJ Wavefront"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:27
#, fuzzy
msgctxt "@item:inmenu"
msgid "Check for Updates"
msgstr "Vérifier les mises à jour"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:73
#, fuzzy
msgctxt "@info"
msgid "A new version is available!"
msgstr "Une nouvelle version est disponible !"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/UpdateChecker.py:74
msgctxt "@action:button"
msgid "Download"
msgstr "Télécharger"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/__init__.py:12
msgctxt "@label"
msgid "Update Checker"
msgstr "Mise à jour du contrôleur"
#: /home/tamara/2.1/Uranium/plugins/UpdateChecker/__init__.py:15
#, fuzzy
msgctxt "@info:whatsthis"
msgid "Checks for updates of the software."
msgstr "Vérifier les mises à jour du logiciel."
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:91
#, fuzzy, python-brace-format
msgctxt ""
"@label Short days-hours-minutes format. {0} is days, {1} is hours, {2} is "
"minutes"
msgid "{0:0>2}d {1:0>2}h {2:0>2}min"
msgstr "{0:0>2}j {1:0>2}h {2:0>2}min"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:93
#, fuzzy, python-brace-format
msgctxt "@label Short hours-minutes format. {0} is hours, {1} is minutes"
msgid "{0:0>2}h {1:0>2}min"
msgstr "{0:0>2}h {1:0>2}min"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:96
#, fuzzy, python-brace-format
msgctxt ""
"@label Days-hours-minutes duration format. {0} is days, {1} is hours, {2} is "
"minutes"
msgid "{0} days {1} hours {2} minutes"
msgstr "{0} jour(s) {1} heure(s) {2} minute(s)"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:98
#, fuzzy, python-brace-format
msgctxt "@label Hours-minutes duration fromat. {0} is hours, {1} is minutes"
msgid "{0} hours {1} minutes"
msgstr "{0} heure(s) {1} minute(s)"
#: /home/tamara/2.1/Uranium/UM/Qt/Duration.py:100
#, fuzzy, python-brace-format
msgctxt "@label Minutes only duration format, {0} is minutes"
msgid "{0} minutes"
msgstr "{0} minute(s)"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/SettingsFromCategoryModel.py:80
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MachineManagerProxy.py:104
#, python-brace-format
msgctxt ""
"@item:intext appended to customised profiles ({0} is old profile name)"
msgid "{0} (Customised)"
msgstr "{0} (Personnalisé)"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MeshFileHandlerProxy.py:45
#, fuzzy, python-brace-format
msgctxt "@item:inlistbox"
msgid "All Supported Types ({0})"
msgstr "Tous les types supportés ({0})"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/MeshFileHandlerProxy.py:46
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:179
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:192
#, fuzzy
msgctxt "@item:inlistbox"
msgid "All Files (*)"
msgstr "Tous les fichiers (*)"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:93
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to import profile from <filename>{0}</filename>: <message>{1}</"
"message>"
msgstr "Échec de l'importation du profil depuis le fichier <filename>{0}</filename> : <message>{1}</message>"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:106
#, python-brace-format
msgctxt "@info:status"
msgid "Profile was imported as {0}"
msgstr "Le profil a été importé sous {0}"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:108
#, python-brace-format
msgctxt "@info:status"
msgid "Successfully imported profile {0}"
msgstr "Importation du profil {0} réussie"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:111
#, python-brace-format
msgctxt "@info:status"
msgid "Profile {0} has an unknown file type."
msgstr "Le profil {0} est un type de fichier inconnu."
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:155
#, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to export profile to <filename>{0}</filename>: <message>{1}</message>"
msgstr "Échec de l'exportation du profil vers <filename>{0}</filename> : <message>{1}</message>"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:160
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid ""
"Failed to export profile to <filename>{0}</filename>: Writer plugin reported "
"failure."
msgstr "Échec de l'exportation du profil vers <filename>{0}</filename> : Le plug-in du générateur a rapporté une erreur."
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:163
#, python-brace-format
msgctxt "@info:status"
msgid "Exported profile to <filename>{0}</filename>"
msgstr "Profil exporté vers <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:178
#, fuzzy
msgctxt "@item:inlistbox"
msgid "All supported files"
msgstr "Tous les fichiers supportés"
#: /home/tamara/2.1/Uranium/UM/Qt/Bindings/ProfilesModel.py:201
msgctxt "@item:inlistbox"
msgid "- Use Global Profile -"
msgstr "- Utiliser le profil global -"
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:78
#, fuzzy
msgctxt "@info:progress"
msgid "Loading plugins..."
msgstr "Chargement des plug-ins..."
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:82
#, fuzzy
msgctxt "@info:progress"
msgid "Loading machines..."
msgstr "Chargement des machines..."
#: /home/tamara/2.1/Uranium/UM/Qt/QtApplication.py:86
#, fuzzy
msgctxt "@info:progress"
msgid "Loading preferences..."
msgstr "Chargement des préférences..."
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:35
#, fuzzy, python-brace-format
msgctxt "@info:status"
msgid "Cannot open file type <filename>{0}</filename>"
msgstr "Impossible d'ouvrir le type de fichier <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:44
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:66
#, python-brace-format
msgctxt "@info:status"
msgid "Failed to load <filename>{0}</filename>"
msgstr "Échec du chargement de <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:48
#, python-brace-format
msgctxt "@info:status"
msgid "Loading <filename>{0}</filename>"
msgstr "Chargement du fichier <filename>{0}</filename>"
#: /home/tamara/2.1/Uranium/UM/Mesh/ReadMeshJob.py:94
#, python-format, python-brace-format
msgctxt "@info:status"
msgid "Auto scaled object to {0}% of original size"
msgstr "Mise à l'échelle automatique de l'objet à {0}% de sa taille d'origine"
#: /home/tamara/2.1/Uranium/UM/Settings/MachineDefinition.py:115
msgctxt "@label"
msgid "Unknown Manufacturer"
msgstr "Fabricant inconnu"
#: /home/tamara/2.1/Uranium/UM/Settings/MachineDefinition.py:116
msgctxt "@label"
msgid "Unknown Author"
msgstr "Auteur inconnu"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:22
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:29
#, fuzzy
msgctxt "@action:button"
msgid "Reset"
msgstr "Réinitialiser"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:39
msgctxt "@action:button"
msgid "Lay flat"
msgstr "Mettre à plat"
#: /home/tamara/2.1/Uranium/plugins/Tools/RotateTool/RotateTool.qml:55
#, fuzzy
msgctxt "@action:checkbox"
msgid "Snap Rotation"
msgstr "Rotation simplifiée"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:42
#, fuzzy
msgctxt "@action:button"
msgid "Scale to Max"
msgstr "Mettre à l'échelle maximale"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:67
#, fuzzy
msgctxt "@option:check"
msgid "Snap Scaling"
msgstr "Ajustement de l'échelle simplifié"
#: /home/tamara/2.1/Uranium/plugins/Tools/ScaleTool/ScaleTool.qml:85
#, fuzzy
msgctxt "@option:check"
msgid "Uniform Scaling"
msgstr "Échelle uniforme"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:20
msgctxt "@title:window"
msgid "Rename"
msgstr "Renommer"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:49
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:222
msgctxt "@action:button"
msgid "Cancel"
msgstr "Annuler"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/RenameDialog.qml:53
msgctxt "@action:button"
msgid "Ok"
msgstr "Ok"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ConfirmRemoveDialog.qml:16
msgctxt "@title:window"
msgid "Confirm Remove"
msgstr "Confirmer la suppression"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ConfirmRemoveDialog.qml:17
#, fuzzy
msgctxt "@label (%1 is object name)"
msgid "Are you sure you wish to remove %1? This cannot be undone!"
msgstr "Êtes-vous sûr de vouloir supprimer l'objet %1 ? Vous ne pourrez pas revenir en arrière !"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/MachinesPage.qml:12
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:116
msgctxt "@title:tab"
msgid "Printers"
msgstr "Imprimantes"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/MachinesPage.qml:32
msgctxt "@label"
msgid "Type"
msgstr "Type"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:19
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:118
#, fuzzy
msgctxt "@title:tab"
msgid "Plugins"
msgstr "Plug-ins"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:90
#, fuzzy
msgctxt "@label"
msgid "No text available"
msgstr "Aucun texte disponible"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:96
#, fuzzy
msgctxt "@title:window"
msgid "About %1"
msgstr "À propos de %1"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:128
#, fuzzy
msgctxt "@label"
msgid "Author:"
msgstr "Auteur :"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:150
#, fuzzy
msgctxt "@label"
msgid "Version:"
msgstr "Version :"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PluginsPage.qml:168
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:87
#, fuzzy
msgctxt "@action:button"
msgid "Close"
msgstr "Fermer"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/SettingVisibilityPage.qml:11
#, fuzzy
msgctxt "@title:tab"
msgid "Setting Visibility"
msgstr "Visibilité des paramètres"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/SettingVisibilityPage.qml:29
msgctxt "@label:textbox"
msgid "Filter..."
msgstr "Filtrer..."
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:14
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:117
msgctxt "@title:tab"
msgid "Profiles"
msgstr "Profils"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:22
msgctxt "@action:button"
msgid "Import"
msgstr "Importer"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:37
#, fuzzy
msgctxt "@label"
msgid "Profile type"
msgstr "Type de profil"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:38
msgctxt "@label"
msgid "Starter profile (protected)"
msgstr "Profil débutant (protégé)"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:38
msgctxt "@label"
msgid "Custom profile"
msgstr "Personnaliser le profil"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:57
msgctxt "@action:button"
msgid "Export"
msgstr "Exporter"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:83
#, fuzzy
msgctxt "@window:title"
msgid "Import Profile"
msgstr "Importer un profil"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:91
msgctxt "@title:window"
msgid "Import Profile"
msgstr "Importer un profil"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ProfilesPage.qml:118
msgctxt "@title:window"
msgid "Export Profile"
msgstr "Exporter un profil"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:47
msgctxt "@action:button"
msgid "Add"
msgstr "Ajouter"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:54
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:52
#, fuzzy
msgctxt "@action:button"
msgid "Remove"
msgstr "Supprimer"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/ManagementPage.qml:61
msgctxt "@action:button"
msgid "Rename"
msgstr "Renommer"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:18
#, fuzzy
msgctxt "@title:window"
msgid "Preferences"
msgstr "Préférences"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:80
#, fuzzy
msgctxt "@action:button"
msgid "Defaults"
msgstr "Rétablir les paramètres par défaut"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:114
#, fuzzy
msgctxt "@title:tab"
msgid "General"
msgstr "Général"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Preferences/PreferencesDialog.qml:115
msgctxt "@title:tab"
msgid "Settings"
msgstr "Paramètres"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:179
msgctxt "@action:button"
msgid "Back"
msgstr "Précédent"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:195
#, fuzzy
msgctxt "@action:button"
msgid "Finish"
msgstr "Fin"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Wizard.qml:195
msgctxt "@action:button"
msgid "Next"
msgstr "Suivant"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingItem.qml:114
msgctxt "@info:tooltip"
msgid "Reset to Default"
msgstr "Réinitialiser la valeur par défaut"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:80
msgctxt "@label"
msgid "{0} hidden setting uses a custom value"
msgid_plural "{0} hidden settings use custom values"
msgstr[0] "Le paramètre caché {0} utilise une valeur personnalisée"
msgstr[1] "Les paramètres cachés {0} utilisent des valeurs personnalisées"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:166
#, fuzzy
msgctxt "@action:menu"
msgid "Hide this setting"
msgstr "Masquer ce paramètre"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingView.qml:172
#, fuzzy
msgctxt "@action:menu"
msgid "Configure setting visiblity..."
msgstr "Configurer la visibilité des paramètres..."
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:18
#, fuzzy
msgctxt "@title:tab"
msgid "Machine"
msgstr "Machine"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:29
#, fuzzy
msgctxt "@label:listbox"
msgid "Active Machine:"
msgstr "Machine active :"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:112
#, fuzzy
msgctxt "@title:window"
msgid "Confirm Machine Deletion"
msgstr "Confirmer la suppression de la machine"
#: /home/tamara/2.1/Uranium/UM/Qt/qml/UM/Settings/SettingsConfigurationPage.qml:114
#, fuzzy
msgctxt "@label"
msgid "Are you sure you wish to remove the machine?"
msgstr "Êtes-vous sûr de vouloir supprimer cette machine ?"
#~ msgctxt "@info:status"
#~ msgid "Loaded <filename>{0}</filename>"
#~ msgstr "<filename>{0}</filename> wurde geladen"
#~ msgctxt "@label"
#~ msgid "Per Object Settings Tool"
#~ msgstr "Werkzeug „Einstellungen für einzelne Objekte“"
#~ msgctxt "@info:whatsthis"
#~ msgid "Provides the Per Object Settings."
#~ msgstr ""
#~ "Stellt das Werkzeug „Einstellungen für einzelne Objekte“ zur Verfügung."
#~ msgctxt "@label"
#~ msgid "Per Object Settings"
#~ msgstr "Einstellungen für einzelne Objekte"
#~ msgctxt "@info:tooltip"
#~ msgid "Configure Per Object Settings"
#~ msgstr "Per Objekteinstellungen konfigurieren"
#~ msgctxt "@label"
#~ msgid "Mesh View"
#~ msgstr "Mesh-Ansicht"
#~ msgctxt "@item:inmenu"
#~ msgid "Solid"
#~ msgstr "Solide"
#~ msgctxt "@title:tab"
#~ msgid "Machines"
#~ msgstr "Maschinen"
#~ msgctxt "@label"
#~ msgid "Variant"
#~ msgstr "Variante"
#~ msgctxt "@item:inlistbox"
#~ msgid "Cura Profiles (*.curaprofile)"
#~ msgstr "Cura-Profile (*.curaprofile)"
#~ msgctxt "@action:button"
#~ msgid "Customize Settings"
#~ msgstr "Einstellungen anpassen"
#~ msgctxt "@info:tooltip"
#~ msgid "Customise settings for this object"
#~ msgstr "Einstellungen für dieses Objekt anpassen"
#~ msgctxt "@title:window"
#~ msgid "Pick a Setting to Customize"
#~ msgstr "Wähle eine Einstellung zum Anpassen"
#~ msgctxt "@info:tooltip"
#~ msgid "Reset the rotation of the current selection."
#~ msgstr "Drehung der aktuellen Auswahl zurücksetzen."
#~ msgctxt "@info:tooltip"
#~ msgid "Reset the scaling of the current selection."
#~ msgstr "Skalierung der aktuellen Auswahl zurücksetzen."
#~ msgctxt "@info:tooltip"
#~ msgid "Scale to maximum size"
#~ msgstr "Auf Maximalgröße skalieren"
#~ msgctxt "OBJ Writer file format"
#~ msgid "Wavefront OBJ File"
#~ msgstr "Wavefront OBJ-Datei"
#~ msgctxt "Loading mesh message, {0} is file name"
#~ msgid "Loading {0}"
#~ msgstr "Wird geladen {0}"
#~ msgctxt "Finished loading mesh message, {0} is file name"
#~ msgid "Loaded {0}"
#~ msgstr "Geladen {0}"
#~ msgctxt "Splash screen message"
#~ msgid "Loading translations..."
#~ msgstr "Übersetzungen werden geladen..."

1320
resources/i18n/it/cura.po Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

1320
resources/i18n/nl/cura.po Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -473,7 +473,7 @@ UM.MainWindow
height: childrenRect.height;
Label
{
text: UM.ActiveTool.properties.getValue("Rotation") != undefined ? "%1°".arg(UM.ActiveTool.properties.Rotation) : "";
text: UM.ActiveTool.properties.getValue("Rotation") != undefined ? "%1°".arg(UM.ActiveTool.properties.getValue("Rotation")) : "";
}
visible: UM.ActiveTool.valid && UM.ActiveTool.properties.Rotation != undefined;

View file

@ -59,16 +59,13 @@ UM.PreferencesPage
id: languageList
Component.onCompleted: {
// append({ text: catalog.i18nc("@item:inlistbox", "Bulgarian"), code: "bg" })
// append({ text: catalog.i18nc("@item:inlistbox", "Czech"), code: "cs" })
append({ text: catalog.i18nc("@item:inlistbox", "English"), code: "en" })
append({ text: catalog.i18nc("@item:inlistbox", "Finnish"), code: "fi" })
append({ text: catalog.i18nc("@item:inlistbox", "French"), code: "fr" })
append({ text: catalog.i18nc("@item:inlistbox", "German"), code: "de" })
// append({ text: catalog.i18nc("@item:inlistbox", "Italian"), code: "it" })
append({ text: catalog.i18nc("@item:inlistbox", "Polish"), code: "pl" })
// append({ text: catalog.i18nc("@item:inlistbox", "Russian"), code: "ru" })
// append({ text: catalog.i18nc("@item:inlistbox", "Spanish"), code: "es" })
append({ text: catalog.i18nc("@item:inlistbox", "Italian"), code: "it" })
append({ text: catalog.i18nc("@item:inlistbox", "Dutch"), code: "nl" })
append({ text: catalog.i18nc("@item:inlistbox", "Spanish"), code: "es" })
}
}