diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/libraries/checkstyle_all_4_3.xml b/.idea/libraries/checkstyle_all_4_3.xml
new file mode 100644
index 0000000..60dafeb
--- /dev/null
+++ b/.idea/libraries/checkstyle_all_4_3.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/lib.xml b/.idea/libraries/lib.xml
new file mode 100644
index 0000000..9a7d49f
--- /dev/null
+++ b/.idea/libraries/lib.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..bcb5da6
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..9e447f8
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/2/2/2275c6e43ce472bd5bbf7e2df585a992e51645ec b/.idea/sonarlint/issuestore/2/2/2275c6e43ce472bd5bbf7e2df585a992e51645ec
new file mode 100644
index 0000000..aff0283
--- /dev/null
+++ b/.idea/sonarlint/issuestore/2/2/2275c6e43ce472bd5bbf7e2df585a992e51645ec
@@ -0,0 +1,23 @@
+
+^
+java:S2184"BCast one of the operands of this addition operation to a "double".(
+s java:S116@"^Rename this field "m_amountToTestFront" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+w java:S116A"]Rename this field "m_amountToTestBack" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ώ
+p java:S116C"[Rename this field "m_schedulePreset" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+o java:S116D"URename this field "m_schedule" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+ java:S116F"gRename this field "m_fixedExpirationTimeEnabled" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+u java:S116G"`Rename this field "m_fixedExpirationHour" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+| java:S116H"bRename this field "m_fixedExpirationMinute" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+k java:S116J"VRename this field "m_limitTime" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ٿ
+s java:S116K"^Rename this field "m_retestFailedCards" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+l java:S116L"RRename this field "m_sides" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+v java:S116M"\Rename this field "m_groupByCategory" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ʍɆ
+t java:S116N"ZRename this field "m_categoryOrder" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+s java:S116O"YRename this field "m_shuffleRatio" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+x java:S116Q"^Rename this field "m_limitCardsEnabled" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ً
+q java:S116R"]Rename this field "m_limitTimeEnabled" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(X
+l java:S116S"WRename this field "m_limitCards" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(܌
+8
+java:S2386+"Make this member "protected".(
+A
+java:S1197"*Move the array designators [] to the type.(ʴ
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/3/7/3766cfe0278d04a0718352af9c46eb0ddf3f4b4b b/.idea/sonarlint/issuestore/3/7/3766cfe0278d04a0718352af9c46eb0ddf3f4b4b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/6/b/6bf175b5af4a1986c584cf1411d59a062513e74f b/.idea/sonarlint/issuestore/6/b/6bf175b5af4a1986c584cf1411d59a062513e74f
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/a/b/ab8e64f82366190056c66dcf4bfe4fc4342b9fcf b/.idea/sonarlint/issuestore/a/b/ab8e64f82366190056c66dcf4bfe4fc4342b9fcf
new file mode 100644
index 0000000..01c5720
--- /dev/null
+++ b/.idea/sonarlint/issuestore/a/b/ab8e64f82366190056c66dcf4bfe4fc4342b9fcf
@@ -0,0 +1,82 @@
+
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(Ϟ
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(Ƴ
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+o
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(峕
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(՟
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(퇔
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(ڢ
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+k java:S116"URename this field "m_category" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+t java:S116"YRename this field "m_rootCategory" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ԅ
+k java:S116"URename this field "m_settings" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+k java:S116"URename this field "m_provider" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+g java:S116"QRename this field "m_quit" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ܣ
+r java:S116"\Rename this field "m_learningStarted" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Զ
+w java:S116"\Rename this field "m_currentCardInfo" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ۯ
+s java:S116"XRename this field "m_cardsActive" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+o java:S116"YRename this field "m_cardsReserve" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+o java:S116"YRename this field "m_cardsChecked" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+o java:S116"YRename this field "m_cardsLearned" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ϟ
+o java:S116"YRename this field "m_cardsInfoMap" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+w java:S116"\Rename this field "m_cardsEverFailed" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+o java:S116"YRename this field "m_cardsSkipped" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ƴ
+~ java:S116"hRename this field "m_cardsActivePartiallyLearned" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+l java:S116"QRename this field "m_rand" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ޤ
+o java:S116"ZRename this field "m_cardObservers" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(峕
+m java:S116"RRename this field "m_start" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+k java:S116"PRename this field "m_end" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(䇤
+n java:S116"SRename this field "m_logger" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+t java:S116T"_Rename this field "m_categoryGroupOrder" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ù
+V java:S125"").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+D
+java:S1604"(Make this anonymous inner class a lambda(
+D
+java:S1604"(Make this anonymous inner class a lambda(
+?
+java:S1604"(Make this anonymous inner class a lambda(
+?
+java:S1604"(Make this anonymous inner class a lambda(˚
+t java:S116k"_Rename this field "m_selectionObservers" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+u java:S116m"[Rename this field "m_nextCardAction" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+t java:S116n"_Rename this field "m_previousCardAction" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ԓ
+m java:S116p"XRename this field "m_currentCard" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+r java:S116q"]Rename this field "m_currentCardIndex" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+l java:S116r"RRename this field "m_cards" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+j java:S116s"URename this field "m_category" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+m java:S116v"XRename this field "m_applyButton" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+r java:S116x"XRename this field "m_headerPanel" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+k java:S116y"VRename this field "m_cardPanel" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+k
+java:S3008{"URename this field "m_instance" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(펇
+
+java:S6548D"A Singleton implementation was detected. Make sure the use of the Singleton pattern is required and the implementation is the right one for the context.(㐦
+]
+java:S1126"AReplace this if-then-else statement by a single return statement.(
+W java:S125"").(DŽ
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(ѿ
+\
+java:S2184"@Cast one of the operands of this addition operation to a "long".(
+\
+java:S2184"@Cast one of the operands of this addition operation to a "long".(ٽ
+\
+java:S2184"@Cast one of the operands of this addition operation to a "long".(
+l java:S116"VRename this field "m_summaries" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(DŽ
+l java:S116"QRename this field "m_file" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+p java:S116"URename this field "m_isLoaded" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+l java:S1169"RRename this field "m_start" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+j java:S116:"PRename this field "m_end" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ƥؚ
+j java:S116;"URename this field "m_duration" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+m java:S116="SRename this field "m_passed" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+g java:S116>"SRename this field "m_failed" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ȶr
+h java:S116?"TRename this field "m_skipped" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(p
+p java:S116@"VRename this field "m_relearned" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+o
+java:S2975"SRemove this "clone" implementation; use a copy constructor or copy factory instead.(ɯ
+[
+java:S3358"DExtract this nested ternary operation into an independent statement.(
+I
+java:S1135"2Complete the task associated to this TODO comment.(Ԩ
+U
+java:S1155">Use isEmpty() to check whether the collection is empty or not.(
+M
+java:S1905"1Remove this unnecessary cast to "SessionSummary".(
+H
+java:S1135"2Complete the task associated to this TODO comment.(
+N
+java:S1135"2Complete the task associated to this TODO comment.(
+M
+java:S1905"1Remove this unnecessary cast to "SessionSummary".(
+H
+java:S1905"1Remove this unnecessary cast to "SessionSummary".(
+F
+java:S2093"*Change this "try" to a try-with-resources.(
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/e/5/e55cb21213ccb9de11bf775cca6004aea7c0ab54 b/.idea/sonarlint/issuestore/e/5/e55cb21213ccb9de11bf775cca6004aea7c0ab54
new file mode 100644
index 0000000..c899ef2
--- /dev/null
+++ b/.idea/sonarlint/issuestore/e/5/e55cb21213ccb9de11bf775cca6004aea7c0ab54
@@ -0,0 +1,38 @@
+
+u
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+p
+java:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(̶
+Q
+java:S1141"5Extract this nested try block into a separate method.(
+?
+java:S1604"(Make this anonymous inner class a lambda(
+m java:S116w"XRename this field "m_categoryBox" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ݤ
+n java:S116x"YRename this field "m_categoryTree" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(⪱
+p java:S116y"[Rename this field "m_deckTablePanel" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+u java:S116z"[Rename this field "m_deckChartPanel" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ց
+l java:S116{"WRename this field "m_learnPanel" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+j java:S116|"VRename this field "m_statusBar" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(P
+u java:S116}"[Rename this field "m_newCardManager" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+s java:S116"XRename this field "m_bottomPanel" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+q java:S116"[Rename this field "m_showTreeButton" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ƌ
+v java:S116"`Rename this field "m_horizontalSplitPane" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ԛ
+y java:S116"^Rename this field "m_verticalSplitPane" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+v java:S116"[Rename this field "m_treeScrollPane" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+g java:S116"QRename this field "m_main" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+k java:S116"URename this field "m_category" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+g java:S116"QRename this field "m_deck" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+z java:S116"_Rename this field "m_selectionObservers" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+x java:S116"]Rename this field "m_showCategoryTree" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Н
+v java:S116"`Rename this field "m_showCategoryTreeOld" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+t java:S116"^Rename this field "m_categoryTreeWidth" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ߝ
+y java:S116"^Rename this field "m_focusedCategories" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+`
+java:S1124n"EReorder the modifiers to comply with the Java Language Specification.(ԛ
+W java:S125"").(
+t
+java:S2293]"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+t
+java:S2293_"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+@
+java:S2629"$Invoke method(s) only conditionally.(
+i
+java:S2095"MUse try-with-resources or close this "FileInputStream" in a "finally" clause.(؝
+e
+java:S2095"NUse try-with-resources or close this "FileOutputStream" in a "finally" clause.(ַ
+m java:S116N"XRename this field "m_recentFiles" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(팄
+f java:S116S"RRename this field "m_frame" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+
+h java:S116T"SRename this field "m_lesson" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+o java:S116U"ZRename this field "m_learnSettings" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ϳ
+y java:S116V"_Rename this field "m_globalLearnHistory" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+q java:S116W"\Rename this field "m_runningSessions" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+v java:S116Z"\Rename this field "m_lessonObservers" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+w java:S116\"bRename this field "m_learnSessionObservers" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+u java:S116^"`Rename this field "m_programEndObservers" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ص
+p
+java:S3008Q"URename this field "m_instance" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(۫
+{
+java:S3008c"`Rename this field "m_lastLoggedThrowable" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+8
+java:S2386D"Make this member "protected".(
+M
+java:S18749"2Remove this use of "Observable"; it is deprecated.(
+W
+java:S1075I"ARefactor your code to get this URI from a customizable parameter.(
+N
+java:S1135"2Complete the task associated to this TODO comment.(
+N
+java:S1135"2Complete the task associated to this TODO comment.(
+V java:S899";Do something with the "boolean" value returned by "delete".(
+j
+java:S4042"NUse "java.nio.file.Files#delete" here for better messages on error conditions.(
+I
+java:S1135"2Complete the task associated to this TODO comment.(
+W java:S125"src/jmemorize/gui/swing/actions/file/AbstractExportAction.java,d\a\da07fa4e40d240c55ff2da1b55d46b2f11277eca
\ No newline at end of file
diff --git a/.idea/sonarlint/securityhotspotstore/2/2/2275c6e43ce472bd5bbf7e2df585a992e51645ec b/.idea/sonarlint/securityhotspotstore/2/2/2275c6e43ce472bd5bbf7e2df585a992e51645ec
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/3/7/3766cfe0278d04a0718352af9c46eb0ddf3f4b4b b/.idea/sonarlint/securityhotspotstore/3/7/3766cfe0278d04a0718352af9c46eb0ddf3f4b4b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/6/b/6bf175b5af4a1986c584cf1411d59a062513e74f b/.idea/sonarlint/securityhotspotstore/6/b/6bf175b5af4a1986c584cf1411d59a062513e74f
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/a/b/ab8e64f82366190056c66dcf4bfe4fc4342b9fcf b/.idea/sonarlint/securityhotspotstore/a/b/ab8e64f82366190056c66dcf4bfe4fc4342b9fcf
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/c/d/cd94ba5d34edc2910f994364cd964fb6e79e4e95 b/.idea/sonarlint/securityhotspotstore/c/d/cd94ba5d34edc2910f994364cd964fb6e79e4e95
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/d/2/d2fe26e6d0e70e250002d77b7dc9211910fc498e b/.idea/sonarlint/securityhotspotstore/d/2/d2fe26e6d0e70e250002d77b7dc9211910fc498e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/d/a/da07fa4e40d240c55ff2da1b55d46b2f11277eca b/.idea/sonarlint/securityhotspotstore/d/a/da07fa4e40d240c55ff2da1b55d46b2f11277eca
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/d/b/db313224e1a4c97c63f69c529cd9849103fc6f10 b/.idea/sonarlint/securityhotspotstore/d/b/db313224e1a4c97c63f69c529cd9849103fc6f10
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/5/e55cb21213ccb9de11bf775cca6004aea7c0ab54 b/.idea/sonarlint/securityhotspotstore/e/5/e55cb21213ccb9de11bf775cca6004aea7c0ab54
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/9/e99fadee9e511a0362989a136fb9152651c7e642 b/.idea/sonarlint/securityhotspotstore/e/9/e99fadee9e511a0362989a136fb9152651c7e642
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/f/0/f0e6d86748425db7547fc8ff2155e79f3e3a0004 b/.idea/sonarlint/securityhotspotstore/f/0/f0e6d86748425db7547fc8ff2155e79f3e3a0004
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/f/5/f5f1ef2c5d1ac184d0924e4449d289d14a4f8490 b/.idea/sonarlint/securityhotspotstore/f/5/f5f1ef2c5d1ac184d0924e4449d289d14a4f8490
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb
new file mode 100644
index 0000000..5a80790
--- /dev/null
+++ b/.idea/sonarlint/securityhotspotstore/index.pb
@@ -0,0 +1,25 @@
+
+L
+src/jmemorize/core/Main.java,f\0\f0e6d86748425db7547fc8ff2155e79f3e3a0004
+a
+1src/jmemorize/core/learn/DefaultLearnSession.java,a\b\ab8e64f82366190056c66dcf4bfe4fc4342b9fcf
+Z
+*src/jmemorize/core/learn/LearnHistory.java,d\b\db313224e1a4c97c63f69c529cd9849103fc6f10
+Z
+*src/jmemorize/core/learn/LearnSession.java,f\5\f5f1ef2c5d1ac184d0924e4449d289d14a4f8490
+b
+2src/jmemorize/core/learn/LearnSessionObserver.java,3\7\3766cfe0278d04a0718352af9c46eb0ddf3f4b4b
+b
+2src/jmemorize/core/learn/LearnSessionProvider.java,6\b\6bf175b5af4a1986c584cf1411d59a062513e74f
+[
++src/jmemorize/core/learn/LearnSettings.java,2\2\2275c6e43ce472bd5bbf7e2df585a992e51645ec
+a
+1src/jmemorize/gui/swing/frames/EditCardFrame.java,d\2\d2fe26e6d0e70e250002d77b7dc9211910fc498e
+]
+-src/jmemorize/gui/swing/frames/FindFrame.java,c\d\cd94ba5d34edc2910f994364cd964fb6e79e4e95
+]
+-src/jmemorize/gui/swing/frames/MainFrame.java,e\5\e55cb21213ccb9de11bf775cca6004aea7c0ab54
+`
+0src/jmemorize/gui/swing/frames/NewCardFrame.java,e\9\e99fadee9e511a0362989a136fb9152651c7e642
+n
+>src/jmemorize/gui/swing/actions/file/AbstractExportAction.java,d\a\da07fa4e40d240c55ff2da1b55d46b2f11277eca
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.xml b/build.xml
index d05f91e..13fb04c 100644
--- a/build.xml
+++ b/build.xml
@@ -107,11 +107,11 @@
-
+
-
+
@@ -209,7 +209,7 @@
-
+
@@ -318,7 +318,7 @@
-
+
diff --git a/checkstyle_config/checkstyle_config.iml b/checkstyle_config/checkstyle_config.iml
new file mode 100644
index 0000000..e97b9cb
--- /dev/null
+++ b/checkstyle_config/checkstyle_config.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jMemorizeMain.iml b/jMemorizeMain.iml
new file mode 100644
index 0000000..fb8e866
--- /dev/null
+++ b/jMemorizeMain.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/jMemorizeMain/jmemorize/core/Card$1.class b/out/production/jMemorizeMain/jmemorize/core/Card$1.class
new file mode 100644
index 0000000..e868af0
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Card$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Card.class b/out/production/jMemorizeMain/jmemorize/core/Card.class
new file mode 100644
index 0000000..ca7975c
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Card.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/CardSide$CardSideObserver.class b/out/production/jMemorizeMain/jmemorize/core/CardSide$CardSideObserver.class
new file mode 100644
index 0000000..c5431e7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/CardSide$CardSideObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/CardSide.class b/out/production/jMemorizeMain/jmemorize/core/CardSide.class
new file mode 100644
index 0000000..2afe366
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/CardSide.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Category.class b/out/production/jMemorizeMain/jmemorize/core/Category.class
new file mode 100644
index 0000000..3a3b6b5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Category.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/CategoryObserver.class b/out/production/jMemorizeMain/jmemorize/core/CategoryObserver.class
new file mode 100644
index 0000000..ac6350d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/CategoryObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Events.class b/out/production/jMemorizeMain/jmemorize/core/Events.class
new file mode 100644
index 0000000..8c045c3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Events.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/FormattedText$ParseException.class b/out/production/jMemorizeMain/jmemorize/core/FormattedText$ParseException.class
new file mode 100644
index 0000000..a32e99b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/FormattedText$ParseException.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/FormattedText.class b/out/production/jMemorizeMain/jmemorize/core/FormattedText.class
new file mode 100644
index 0000000..731f638
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/FormattedText.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/ImageRepository$ImageItem.class b/out/production/jMemorizeMain/jmemorize/core/ImageRepository$ImageItem.class
new file mode 100644
index 0000000..6969f9b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/ImageRepository$ImageItem.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/ImageRepository.class b/out/production/jMemorizeMain/jmemorize/core/ImageRepository.class
new file mode 100644
index 0000000..8e35d73
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/ImageRepository.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Lesson.class b/out/production/jMemorizeMain/jmemorize/core/Lesson.class
new file mode 100644
index 0000000..d4d820f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Lesson.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/LessonObserver.class b/out/production/jMemorizeMain/jmemorize/core/LessonObserver.class
new file mode 100644
index 0000000..446f340
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/LessonObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/LessonProvider.class b/out/production/jMemorizeMain/jmemorize/core/LessonProvider.class
new file mode 100644
index 0000000..7425f77
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/LessonProvider.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Main$ProgramEndObserver.class b/out/production/jMemorizeMain/jmemorize/core/Main$ProgramEndObserver.class
new file mode 100644
index 0000000..e2bc7de
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Main$ProgramEndObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Main.class b/out/production/jMemorizeMain/jmemorize/core/Main.class
new file mode 100644
index 0000000..cef2101
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Main.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/SearchTool.class b/out/production/jMemorizeMain/jmemorize/core/SearchTool.class
new file mode 100644
index 0000000..6d03879
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/SearchTool.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Settings$1.class b/out/production/jMemorizeMain/jmemorize/core/Settings$1.class
new file mode 100644
index 0000000..ee96d0e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Settings$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Settings$CardFontObserver.class b/out/production/jMemorizeMain/jmemorize/core/Settings$CardFontObserver.class
new file mode 100644
index 0000000..8db1a16
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Settings$CardFontObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/Settings.class b/out/production/jMemorizeMain/jmemorize/core/Settings.class
new file mode 100644
index 0000000..b91e150
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/Settings.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/io/CsvBuilder$BadHeaderException.class b/out/production/jMemorizeMain/jmemorize/core/io/CsvBuilder$BadHeaderException.class
new file mode 100644
index 0000000..700a2a7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/io/CsvBuilder$BadHeaderException.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/io/CsvBuilder.class b/out/production/jMemorizeMain/jmemorize/core/io/CsvBuilder.class
new file mode 100644
index 0000000..32412f5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/io/CsvBuilder.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/io/PdfRtfBuilder.class b/out/production/jMemorizeMain/jmemorize/core/io/PdfRtfBuilder.class
new file mode 100644
index 0000000..5ad6795
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/io/PdfRtfBuilder.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/io/XmlBuilder.class b/out/production/jMemorizeMain/jmemorize/core/io/XmlBuilder.class
new file mode 100644
index 0000000..75e5ea4
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/io/XmlBuilder.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession$CardComparator.class b/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession$CardComparator.class
new file mode 100644
index 0000000..9381ddb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession$CardComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession$CardInfo.class b/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession$CardInfo.class
new file mode 100644
index 0000000..a588d1b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession$CardInfo.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession.class b/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession.class
new file mode 100644
index 0000000..b164c27
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/DefaultLearnSession.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$CalendarComparator.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$CalendarComparator.class
new file mode 100644
index 0000000..a016032
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$CalendarComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$DateComparator.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$DateComparator.class
new file mode 100644
index 0000000..2592c7d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$DateComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$MonthComparator.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$MonthComparator.class
new file mode 100644
index 0000000..fb47291
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$MonthComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$SessionSummary.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$SessionSummary.class
new file mode 100644
index 0000000..3a4bf51
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$SessionSummary.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$SimpleComparator.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$SimpleComparator.class
new file mode 100644
index 0000000..a14c9a6
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$SimpleComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$WeekComparator.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$WeekComparator.class
new file mode 100644
index 0000000..3174874
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$WeekComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$YearComparator.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$YearComparator.class
new file mode 100644
index 0000000..60bf4a0
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory$YearComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory.class
new file mode 100644
index 0000000..f89f0eb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnHistory.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnSession$LearnCardObserver.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSession$LearnCardObserver.class
new file mode 100644
index 0000000..cf74498
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSession$LearnCardObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnSession.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSession.class
new file mode 100644
index 0000000..bd1242f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSession.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnSessionObserver.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSessionObserver.class
new file mode 100644
index 0000000..8168d4f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSessionObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnSessionProvider.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSessionProvider.class
new file mode 100644
index 0000000..0c45ef2
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSessionProvider.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnSettings$SchedulePreset.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSettings$SchedulePreset.class
new file mode 100644
index 0000000..d901387
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSettings$SchedulePreset.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/learn/LearnSettings.class b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSettings.class
new file mode 100644
index 0000000..9f1f8ad
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/learn/LearnSettings.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/AllTests.class b/out/production/jMemorizeMain/jmemorize/core/test/AllTests.class
new file mode 100644
index 0000000..854f9b7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/AllTests.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/CSVToolkitTest$1.class b/out/production/jMemorizeMain/jmemorize/core/test/CSVToolkitTest$1.class
new file mode 100644
index 0000000..7481e32
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/CSVToolkitTest$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/CSVToolkitTest.class b/out/production/jMemorizeMain/jmemorize/core/test/CSVToolkitTest.class
new file mode 100644
index 0000000..e7e86eb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/CSVToolkitTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/CardTest.class b/out/production/jMemorizeMain/jmemorize/core/test/CardTest.class
new file mode 100644
index 0000000..9d13911
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/CardTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$CardEvent.class b/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$CardEvent.class
new file mode 100644
index 0000000..22b0940
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$CardEvent.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$CategoryEvent.class b/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$CategoryEvent.class
new file mode 100644
index 0000000..8867f5b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$CategoryEvent.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$TestEvent.class b/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$TestEvent.class
new file mode 100644
index 0000000..0b6d6b6
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest$TestEvent.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest.class b/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest.class
new file mode 100644
index 0000000..61af603
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/CategoryTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest$1.class b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest$1.class
new file mode 100644
index 0000000..fabf550
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest.class b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest.class
new file mode 100644
index 0000000..727972b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2$1.class b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2$1.class
new file mode 100644
index 0000000..a717cc7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2$IntWrapper.class b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2$IntWrapper.class
new file mode 100644
index 0000000..6b05db9
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2$IntWrapper.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2.class b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2.class
new file mode 100644
index 0000000..2a1843d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/EquivalenceClassSetTest2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/FormattedTextTest.class b/out/production/jMemorizeMain/jmemorize/core/test/FormattedTextTest.class
new file mode 100644
index 0000000..65f6b59
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/FormattedTextTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/ImageRepositoryTest.class b/out/production/jMemorizeMain/jmemorize/core/test/ImageRepositoryTest.class
new file mode 100644
index 0000000..d736303
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/ImageRepositoryTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/LearnHistoryTest.class b/out/production/jMemorizeMain/jmemorize/core/test/LearnHistoryTest.class
new file mode 100644
index 0000000..8e76e0f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/LearnHistoryTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionLargeTest.class b/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionLargeTest.class
new file mode 100644
index 0000000..1570ba2
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionLargeTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionShufflingTest.class b/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionShufflingTest.class
new file mode 100644
index 0000000..3c0514a
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionShufflingTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionTest.class b/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionTest.class
new file mode 100644
index 0000000..6358b58
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/LearnSessionTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/LearnSettingsTest.class b/out/production/jMemorizeMain/jmemorize/core/test/LearnSettingsTest.class
new file mode 100644
index 0000000..5bd0d0f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/LearnSettingsTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/LessonProviderTest.class b/out/production/jMemorizeMain/jmemorize/core/test/LessonProviderTest.class
new file mode 100644
index 0000000..935ab7f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/LessonProviderTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/LocalizationTest.class b/out/production/jMemorizeMain/jmemorize/core/test/LocalizationTest.class
new file mode 100644
index 0000000..6ff4912
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/LocalizationTest.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/TestHelper.class b/out/production/jMemorizeMain/jmemorize/core/test/TestHelper.class
new file mode 100644
index 0000000..1edf3a6
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/TestHelper.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/stubs/LearnSessionProviderStub.class b/out/production/jMemorizeMain/jmemorize/core/test/stubs/LearnSessionProviderStub.class
new file mode 100644
index 0000000..636c6cc
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/stubs/LearnSessionProviderStub.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/core/test/stubs/LearnSessionStub.class b/out/production/jMemorizeMain/jmemorize/core/test/stubs/LearnSessionStub.class
new file mode 100644
index 0000000..d3e526f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/core/test/stubs/LearnSessionStub.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/LC.class b/out/production/jMemorizeMain/jmemorize/gui/LC.class
new file mode 100644
index 0000000..03f7891
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/LC.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/Localization$1.class b/out/production/jMemorizeMain/jmemorize/gui/Localization$1.class
new file mode 100644
index 0000000..fcd9135
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/Localization$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/Localization.class b/out/production/jMemorizeMain/jmemorize/gui/Localization.class
new file mode 100644
index 0000000..a7ea0d9
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/Localization.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont$FontAlignment.class b/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont$FontAlignment.class
new file mode 100644
index 0000000..6d9e7e5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont$FontAlignment.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont$FontType.class b/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont$FontType.class
new file mode 100644
index 0000000..70f8500
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont$FontType.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont.class b/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont.class
new file mode 100644
index 0000000..255b8db
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/CardFont.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/CardStatusIcons.class b/out/production/jMemorizeMain/jmemorize/gui/swing/CardStatusIcons.class
new file mode 100644
index 0000000..507ffb5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/CardStatusIcons.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/ColorConstants.class b/out/production/jMemorizeMain/jmemorize/gui/swing/ColorConstants.class
new file mode 100644
index 0000000..1051c06
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/ColorConstants.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$CardsTransferable.class b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$CardsTransferable.class
new file mode 100644
index 0000000..efab2d9
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$CardsTransferable.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$CategoryTransferable.class b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$CategoryTransferable.class
new file mode 100644
index 0000000..32c6a25
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$CategoryTransferable.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$FormattedTextSection.class b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$FormattedTextSection.class
new file mode 100644
index 0000000..ed7e982
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$FormattedTextSection.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$FormattedTextTransferable.class b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$FormattedTextTransferable.class
new file mode 100644
index 0000000..983dc86
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler$FormattedTextTransferable.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler.class b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler.class
new file mode 100644
index 0000000..ea4cd95
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/GeneralTransferHandler.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/MainMenu.class b/out/production/jMemorizeMain/jmemorize/gui/swing/MainMenu.class
new file mode 100644
index 0000000..6330198
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/MainMenu.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/NewCardFramesManager.class b/out/production/jMemorizeMain/jmemorize/gui/swing/NewCardFramesManager.class
new file mode 100644
index 0000000..60657ec
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/NewCardFramesManager.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/Quiz.class b/out/production/jMemorizeMain/jmemorize/gui/swing/Quiz.class
new file mode 100644
index 0000000..87e67c3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/Quiz.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/SelectionProvider$SelectionObserver.class b/out/production/jMemorizeMain/jmemorize/gui/swing/SelectionProvider$SelectionObserver.class
new file mode 100644
index 0000000..c6ec8ba
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/SelectionProvider$SelectionObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/SelectionProvider.class b/out/production/jMemorizeMain/jmemorize/gui/swing/SelectionProvider.class
new file mode 100644
index 0000000..e8e2c49
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/SelectionProvider.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AboutAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AboutAction.class
new file mode 100644
index 0000000..2fe83fb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AboutAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AbstractAction2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AbstractAction2.class
new file mode 100644
index 0000000..c9f99ba
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AbstractAction2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AbstractSessionDisabledAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AbstractSessionDisabledAction.class
new file mode 100644
index 0000000..469075b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/AbstractSessionDisabledAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/LearnAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/LearnAction.class
new file mode 100644
index 0000000..a8e0854
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/LearnAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/OpenURLAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/OpenURLAction.class
new file mode 100644
index 0000000..9c9c367
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/OpenURLAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/RenameCategoryAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/RenameCategoryAction.class
new file mode 100644
index 0000000..0a03149
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/RenameCategoryAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/ShowCategoryTreeAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/ShowCategoryTreeAction.class
new file mode 100644
index 0000000..542c621
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/ShowCategoryTreeAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/ShowHistoryAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/ShowHistoryAction.class
new file mode 100644
index 0000000..33e7752
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/ShowHistoryAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/SplitMainFrameAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/SplitMainFrameAction.class
new file mode 100644
index 0000000..52adab7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/SplitMainFrameAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/AddCardAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/AddCardAction.class
new file mode 100644
index 0000000..dcfb8f7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/AddCardAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/AddCategoryAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/AddCategoryAction.class
new file mode 100644
index 0000000..faa57f9
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/AddCategoryAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/CopyAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/CopyAction.class
new file mode 100644
index 0000000..a95af8c
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/CopyAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/CutAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/CutAction.class
new file mode 100644
index 0000000..df5a229
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/CutAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/EditCardAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/EditCardAction.class
new file mode 100644
index 0000000..2e561bd
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/EditCardAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/FindAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/FindAction.class
new file mode 100644
index 0000000..646e84a
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/FindAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/PasteAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/PasteAction.class
new file mode 100644
index 0000000..393e763
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/PasteAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/RemoveAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/RemoveAction.class
new file mode 100644
index 0000000..23ebb42
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/RemoveAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/ResetCardAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/ResetCardAction.class
new file mode 100644
index 0000000..ca8d07c
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/edit/ResetCardAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/AbstractExportAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/AbstractExportAction.class
new file mode 100644
index 0000000..7b8dba5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/AbstractExportAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/AbstractImportAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/AbstractImportAction.class
new file mode 100644
index 0000000..42558e4
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/AbstractImportAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExitAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExitAction.class
new file mode 100644
index 0000000..4c07b25
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExitAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToCSVAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToCSVAction.class
new file mode 100644
index 0000000..e207d4e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToCSVAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToCleanLessonAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToCleanLessonAction.class
new file mode 100644
index 0000000..c71a0e0
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToCleanLessonAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToPDFAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToPDFAction.class
new file mode 100644
index 0000000..d6a8370
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToPDFAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToRTFAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToRTFAction.class
new file mode 100644
index 0000000..8d7dddc
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ExportToRTFAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportCSVAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportCSVAction.class
new file mode 100644
index 0000000..a4d028c
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportCSVAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportJMLAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportJMLAction.class
new file mode 100644
index 0000000..c8df3bf
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportJMLAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportTSVAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportTSVAction.class
new file mode 100644
index 0000000..5c0b919
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/ImportTSVAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/NewLessonAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/NewLessonAction.class
new file mode 100644
index 0000000..c82f3d7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/NewLessonAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/OpenLessonAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/OpenLessonAction.class
new file mode 100644
index 0000000..936579e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/OpenLessonAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/OpenRecentLessonAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/OpenRecentLessonAction.class
new file mode 100644
index 0000000..5d1fbcf
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/OpenRecentLessonAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/PreferencesAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/PreferencesAction.class
new file mode 100644
index 0000000..147aea0
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/PreferencesAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/SaveLessonAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/SaveLessonAction.class
new file mode 100644
index 0000000..fadc854
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/SaveLessonAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/SaveLessonAsAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/SaveLessonAsAction.class
new file mode 100644
index 0000000..868bce3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/actions/file/SaveLessonAsAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog$1.class
new file mode 100644
index 0000000..686376b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog$2.class
new file mode 100644
index 0000000..98ea9fe
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog.class
new file mode 100644
index 0000000..2be2d37
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/AboutDialog.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$1.class
new file mode 100644
index 0000000..c205fe5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$2.class
new file mode 100644
index 0000000..8187fdc
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$3.class
new file mode 100644
index 0000000..8cf7900
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$4.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$4.class
new file mode 100644
index 0000000..d11863f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog$4.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog.class
new file mode 100644
index 0000000..839668e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/ErrorDialog.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$1.class
new file mode 100644
index 0000000..46b2af8
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$2.class
new file mode 100644
index 0000000..9f9eec8
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$3.class
new file mode 100644
index 0000000..8846d66
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$4.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$4.class
new file mode 100644
index 0000000..358adc7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$4.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$5.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$5.class
new file mode 100644
index 0000000..31ea659
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog$5.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog.class
new file mode 100644
index 0000000..2348d1f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/LearnSettingsDialog.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/OkayButtonDialog$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/OkayButtonDialog$1.class
new file mode 100644
index 0000000..b438dc4
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/OkayButtonDialog$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/OkayButtonDialog.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/OkayButtonDialog.class
new file mode 100644
index 0000000..579b7a3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/OkayButtonDialog.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$1.class
new file mode 100644
index 0000000..a8d46b9
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$2.class
new file mode 100644
index 0000000..284278e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$3.class
new file mode 100644
index 0000000..02e2155
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$4.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$4.class
new file mode 100644
index 0000000..c7a82e2
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$4.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$5.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$5.class
new file mode 100644
index 0000000..a702563
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$5.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$6.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$6.class
new file mode 100644
index 0000000..1841cdb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$6.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$7.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$7.class
new file mode 100644
index 0000000..a4af7b3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$7.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$8.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$8.class
new file mode 100644
index 0000000..deedfe0
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog$8.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog.class b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog.class
new file mode 100644
index 0000000..f5e4ff5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/dialogs/PreferencesDialog.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$1.class
new file mode 100644
index 0000000..cd5eb93
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$2.class
new file mode 100644
index 0000000..be8581f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$3.class
new file mode 100644
index 0000000..a7b0844
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$4.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$4.class
new file mode 100644
index 0000000..1f5e121
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$4.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$5.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$5.class
new file mode 100644
index 0000000..6f19000
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$5.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$NextCardAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$NextCardAction.class
new file mode 100644
index 0000000..e40b72a
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$NextCardAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$PreviousCardAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$PreviousCardAction.class
new file mode 100644
index 0000000..4a3fe2d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame$PreviousCardAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame.class
new file mode 100644
index 0000000..dd73fda
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/EditCardFrame.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$1.class
new file mode 100644
index 0000000..ef4c698
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$2.class
new file mode 100644
index 0000000..83bcff5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$3.class
new file mode 100644
index 0000000..b0f5a17
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$4.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$4.class
new file mode 100644
index 0000000..81ee731
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$4.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$5.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$5.class
new file mode 100644
index 0000000..df50e22
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$5.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$6.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$6.class
new file mode 100644
index 0000000..0d7299b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$6.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$CloseAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$CloseAction.class
new file mode 100644
index 0000000..19e5541
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$CloseAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$FindAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$FindAction.class
new file mode 100644
index 0000000..89fa6bb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame$FindAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame.class
new file mode 100644
index 0000000..a3896de
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/FindFrame.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$1.class
new file mode 100644
index 0000000..1ca6d54
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$2.class
new file mode 100644
index 0000000..ade96c3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$3.class
new file mode 100644
index 0000000..30a7337
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame.class
new file mode 100644
index 0000000..c1f5e97
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/MainFrame.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$1.class
new file mode 100644
index 0000000..1a48fb3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$2.class
new file mode 100644
index 0000000..91e07a7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$3.class
new file mode 100644
index 0000000..8a8d6ed
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$EditRecentCardAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$EditRecentCardAction.class
new file mode 100644
index 0000000..c39fe86
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$EditRecentCardAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$NewWindowAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$NewWindowAction.class
new file mode 100644
index 0000000..a5d576f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame$NewWindowAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame.class b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame.class
new file mode 100644
index 0000000..9e68ac3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/frames/NewCardFrame.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$1.class
new file mode 100644
index 0000000..aacd412
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$2$LearnCardObs.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$2$LearnCardObs.class
new file mode 100644
index 0000000..39ae607
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$2$LearnCardObs.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$2.class
new file mode 100644
index 0000000..cfc0acc
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel.class
new file mode 100644
index 0000000..7528694
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardCounterPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardHeaderPanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardHeaderPanel$1.class
new file mode 100644
index 0000000..ca509a1
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardHeaderPanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardHeaderPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardHeaderPanel.class
new file mode 100644
index 0000000..3530542
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardHeaderPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$1.class
new file mode 100644
index 0000000..9700be5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$2.class
new file mode 100644
index 0000000..ab2f144
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$AbstractStyledTextAction$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$AbstractStyledTextAction$1.class
new file mode 100644
index 0000000..0070331
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$AbstractStyledTextAction$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$AbstractStyledTextAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$AbstractStyledTextAction.class
new file mode 100644
index 0000000..4dfa25e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$AbstractStyledTextAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$BoldAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$BoldAction.class
new file mode 100644
index 0000000..534d42d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$BoldAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$CardPanelObserver.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$CardPanelObserver.class
new file mode 100644
index 0000000..073b2eb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$CardPanelObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$IncreaseFontSizeAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$IncreaseFontSizeAction.class
new file mode 100644
index 0000000..de99820
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$IncreaseFontSizeAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$InsertImageAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$InsertImageAction.class
new file mode 100644
index 0000000..9b302ca
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$InsertImageAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$ItalicAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$ItalicAction.class
new file mode 100644
index 0000000..647b4e1
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$ItalicAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$RemoveImageAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$RemoveImageAction.class
new file mode 100644
index 0000000..3c38c51
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$RemoveImageAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$ShowCardSideButton.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$ShowCardSideButton.class
new file mode 100644
index 0000000..635437d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$ShowCardSideButton.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$SubAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$SubAction.class
new file mode 100644
index 0000000..fa2f80f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$SubAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$SupAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$SupAction.class
new file mode 100644
index 0000000..71394ff
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$SupAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$UnderlineAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$UnderlineAction.class
new file mode 100644
index 0000000..698dda8
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel$UnderlineAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel.class
new file mode 100644
index 0000000..d47913f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$1.class
new file mode 100644
index 0000000..d6c5bf3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$2.class
new file mode 100644
index 0000000..9a0d495
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$3.class
new file mode 100644
index 0000000..7f13e58
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$CardImageObserver.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$CardImageObserver.class
new file mode 100644
index 0000000..adaf37e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$CardImageObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$CenteredBoxView.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$CenteredBoxView.class
new file mode 100644
index 0000000..c24c39f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$CenteredBoxView.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$Mode.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$Mode.class
new file mode 100644
index 0000000..0a496bb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$Mode.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$MyEditorKit$StyledViewFactory.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$MyEditorKit$StyledViewFactory.class
new file mode 100644
index 0000000..43c7154
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$MyEditorKit$StyledViewFactory.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$MyEditorKit.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$MyEditorKit.class
new file mode 100644
index 0000000..22c652a
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$MyEditorKit.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$ScaledImagePanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$ScaledImagePanel.class
new file mode 100644
index 0000000..23cee26
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$ScaledImagePanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$SetImageModeAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$SetImageModeAction.class
new file mode 100644
index 0000000..57a88d0
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel$SetImageModeAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel.class
new file mode 100644
index 0000000..ecc80c2
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/CardSidePanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$1.class
new file mode 100644
index 0000000..0369f22
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$MouseClicked.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$MouseClicked.class
new file mode 100644
index 0000000..13eb954
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$MouseClicked.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$MyBarRenderer.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$MyBarRenderer.class
new file mode 100644
index 0000000..beb1a1e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel$MyBarRenderer.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel.class
new file mode 100644
index 0000000..2fb2389
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckChartPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$1.class
new file mode 100644
index 0000000..42c913f
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$NextDeckAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$NextDeckAction.class
new file mode 100644
index 0000000..90d6ac5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$NextDeckAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$PreviousDeckAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$PreviousDeckAction.class
new file mode 100644
index 0000000..a0d31aa
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel$PreviousDeckAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel.class
new file mode 100644
index 0000000..3a6d201
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/DeckTablePanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel$1.class
new file mode 100644
index 0000000..a70d387
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel$2.class
new file mode 100644
index 0000000..d148196
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel.class
new file mode 100644
index 0000000..7f34f46
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/HistoryChartPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnPanel$StopAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnPanel$StopAction.class
new file mode 100644
index 0000000..304666c
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnPanel$StopAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnPanel.class
new file mode 100644
index 0000000..a1bed5e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$1.class
new file mode 100644
index 0000000..8146bda
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$2.class
new file mode 100644
index 0000000..436bf24
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$3.class
new file mode 100644
index 0000000..458fcaf
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$4.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$4.class
new file mode 100644
index 0000000..4d92d78
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$4.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$5.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$5.class
new file mode 100644
index 0000000..25de118
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$5.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$6.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$6.class
new file mode 100644
index 0000000..fb6bb73
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$6.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$7.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$7.class
new file mode 100644
index 0000000..77eadea
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels$7.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels.class
new file mode 100644
index 0000000..f59017d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/LearnSettingPanels.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$1.class
new file mode 100644
index 0000000..39a8166
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$AbstractLearnAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$AbstractLearnAction.class
new file mode 100644
index 0000000..bb24de1
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$AbstractLearnAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$NoAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$NoAction.class
new file mode 100644
index 0000000..7a02642
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$NoAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$ShowAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$ShowAction.class
new file mode 100644
index 0000000..8144354
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$ShowAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$SkipAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$SkipAction.class
new file mode 100644
index 0000000..7601e95
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$SkipAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$YesAction.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$YesAction.class
new file mode 100644
index 0000000..903443d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel$YesAction.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel.class
new file mode 100644
index 0000000..de9a8eb
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/QuizPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/SessionChartPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/SessionChartPanel.class
new file mode 100644
index 0000000..4634123
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/SessionChartPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/StatusBar.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/StatusBar.class
new file mode 100644
index 0000000..7641196
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/StatusBar.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/ThinkQuiz.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/ThinkQuiz.class
new file mode 100644
index 0000000..102e2d7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/ThinkQuiz.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TimerPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TimerPanel.class
new file mode 100644
index 0000000..1718e7a
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TimerPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TwoSidesCardPanel$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TwoSidesCardPanel$1.class
new file mode 100644
index 0000000..ea0d558
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TwoSidesCardPanel$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TwoSidesCardPanel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TwoSidesCardPanel.class
new file mode 100644
index 0000000..f3ba6ec
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TwoSidesCardPanel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TypeInQuiz.class b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TypeInQuiz.class
new file mode 100644
index 0000000..fbae191
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/panels/TypeInQuiz.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$1.class
new file mode 100644
index 0000000..2b53c3c
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$2.class
new file mode 100644
index 0000000..36f8a3e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$3.class
new file mode 100644
index 0000000..6a15ae5
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$CardComparator.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$CardComparator.class
new file mode 100644
index 0000000..7cfd2ac
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$CardComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$DateExpiredRenderer.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$DateExpiredRenderer.class
new file mode 100644
index 0000000..13c2d8e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$DateExpiredRenderer.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$DateRenderer.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$DateRenderer.class
new file mode 100644
index 0000000..5a15f2d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$DateRenderer.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$SideRenderer.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$SideRenderer.class
new file mode 100644
index 0000000..1acfea0
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$SideRenderer.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$SortableHeaderRenderer.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$SortableHeaderRenderer.class
new file mode 100644
index 0000000..74cf182
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$SortableHeaderRenderer.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$TextRenderer.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$TextRenderer.class
new file mode 100644
index 0000000..85ac60d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$TextRenderer.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$ViewModel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$ViewModel.class
new file mode 100644
index 0000000..ab28b85
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable$ViewModel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable.class
new file mode 100644
index 0000000..156236b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CardTable.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryComboBox$CatergoryRenderer.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryComboBox$CatergoryRenderer.class
new file mode 100644
index 0000000..65a0109
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryComboBox$CatergoryRenderer.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryComboBox.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryComboBox.class
new file mode 100644
index 0000000..3fc6bca
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryComboBox.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$1.class
new file mode 100644
index 0000000..aee5743
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$2.class
new file mode 100644
index 0000000..3309e13
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$3.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$3.class
new file mode 100644
index 0000000..e1ab542
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$3.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$ActionWrapper.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$ActionWrapper.class
new file mode 100644
index 0000000..6d895f9
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$ActionWrapper.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CategoryTreeModel.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CategoryTreeModel.class
new file mode 100644
index 0000000..7e3b0ad
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CategoryTreeModel.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CellEditor.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CellEditor.class
new file mode 100644
index 0000000..4d3f235
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CellEditor.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CellRenderer.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CellRenderer.class
new file mode 100644
index 0000000..cc8814c
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree$CellRenderer.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree.class
new file mode 100644
index 0000000..59deccc
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/CategoryTree.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar$1.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar$1.class
new file mode 100644
index 0000000..f68a794
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar$2.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar$2.class
new file mode 100644
index 0000000..af6a72e
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar.class
new file mode 100644
index 0000000..3ee5f88
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/ExtentProgressBar.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/PartialProgressBar.class b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/PartialProgressBar.class
new file mode 100644
index 0000000..c0426f8
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/gui/swing/widgets/PartialProgressBar.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/Arrow.class b/out/production/jMemorizeMain/jmemorize/util/Arrow.class
new file mode 100644
index 0000000..e5ec3e2
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/Arrow.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/BareBonesBrowserLaunch.class b/out/production/jMemorizeMain/jmemorize/util/BareBonesBrowserLaunch.class
new file mode 100644
index 0000000..0db9271
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/BareBonesBrowserLaunch.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$EqvPosition.class b/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$EqvPosition.class
new file mode 100644
index 0000000..211effd
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$EqvPosition.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$LoopIterator.class b/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$LoopIterator.class
new file mode 100644
index 0000000..abf4b5c
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$LoopIterator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$OnePassIterator.class b/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$OnePassIterator.class
new file mode 100644
index 0000000..7590ad0
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet$OnePassIterator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet.class b/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet.class
new file mode 100644
index 0000000..f603881
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/EquivalenceClassSet.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/EscapableFrame$1.class b/out/production/jMemorizeMain/jmemorize/util/EscapableFrame$1.class
new file mode 100644
index 0000000..baa57e7
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/EscapableFrame$1.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/EscapableFrame$2.class b/out/production/jMemorizeMain/jmemorize/util/EscapableFrame$2.class
new file mode 100644
index 0000000..c3777dd
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/EscapableFrame$2.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/EscapableFrame.class b/out/production/jMemorizeMain/jmemorize/util/EscapableFrame.class
new file mode 100644
index 0000000..306337d
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/EscapableFrame.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/ExtensionFileFilter.class b/out/production/jMemorizeMain/jmemorize/util/ExtensionFileFilter.class
new file mode 100644
index 0000000..90e952b
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/ExtensionFileFilter.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/NaturalOrderComparator.class b/out/production/jMemorizeMain/jmemorize/util/NaturalOrderComparator.class
new file mode 100644
index 0000000..f4b7ae3
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/NaturalOrderComparator.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/PreferencesTool.class b/out/production/jMemorizeMain/jmemorize/util/PreferencesTool.class
new file mode 100644
index 0000000..8496385
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/PreferencesTool.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/RecentItems$RecentItemsObserver.class b/out/production/jMemorizeMain/jmemorize/util/RecentItems$RecentItemsObserver.class
new file mode 100644
index 0000000..76c5348
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/RecentItems$RecentItemsObserver.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/RecentItems.class b/out/production/jMemorizeMain/jmemorize/util/RecentItems.class
new file mode 100644
index 0000000..fb37275
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/RecentItems.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/ReverseOrder.class b/out/production/jMemorizeMain/jmemorize/util/ReverseOrder.class
new file mode 100644
index 0000000..1815173
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/ReverseOrder.class differ
diff --git a/out/production/jMemorizeMain/jmemorize/util/TimeSpan.class b/out/production/jMemorizeMain/jmemorize/util/TimeSpan.class
new file mode 100644
index 0000000..ab0a940
Binary files /dev/null and b/out/production/jMemorizeMain/jmemorize/util/TimeSpan.class differ
diff --git a/resource/about.png b/out/production/jMemorizeMain/resource/about.png
similarity index 100%
rename from resource/about.png
rename to out/production/jMemorizeMain/resource/about.png
diff --git a/resource/icons/application_split.png b/out/production/jMemorizeMain/resource/icons/application_split.png
similarity index 100%
rename from resource/icons/application_split.png
rename to out/production/jMemorizeMain/resource/icons/application_split.png
diff --git a/resource/icons/application_xp.png b/out/production/jMemorizeMain/resource/icons/application_xp.png
similarity index 100%
rename from resource/icons/application_xp.png
rename to out/production/jMemorizeMain/resource/icons/application_xp.png
diff --git a/resource/icons/arrow_left.png b/out/production/jMemorizeMain/resource/icons/arrow_left.png
similarity index 100%
rename from resource/icons/arrow_left.png
rename to out/production/jMemorizeMain/resource/icons/arrow_left.png
diff --git a/resource/icons/arrow_right.png b/out/production/jMemorizeMain/resource/icons/arrow_right.png
similarity index 100%
rename from resource/icons/arrow_right.png
rename to out/production/jMemorizeMain/resource/icons/arrow_right.png
diff --git a/resource/icons/blank.gif b/out/production/jMemorizeMain/resource/icons/blank.gif
similarity index 100%
rename from resource/icons/blank.gif
rename to out/production/jMemorizeMain/resource/icons/blank.gif
diff --git a/resource/icons/card_add.gif b/out/production/jMemorizeMain/resource/icons/card_add.gif
similarity index 100%
rename from resource/icons/card_add.gif
rename to out/production/jMemorizeMain/resource/icons/card_add.gif
diff --git a/resource/icons/card_edit.gif b/out/production/jMemorizeMain/resource/icons/card_edit.gif
similarity index 100%
rename from resource/icons/card_edit.gif
rename to out/production/jMemorizeMain/resource/icons/card_edit.gif
diff --git a/resource/icons/card_flipped.gif b/out/production/jMemorizeMain/resource/icons/card_flipped.gif
similarity index 100%
rename from resource/icons/card_flipped.gif
rename to out/production/jMemorizeMain/resource/icons/card_flipped.gif
diff --git a/resource/icons/card_next.gif b/out/production/jMemorizeMain/resource/icons/card_next.gif
similarity index 100%
rename from resource/icons/card_next.gif
rename to out/production/jMemorizeMain/resource/icons/card_next.gif
diff --git a/resource/icons/card_prev.gif b/out/production/jMemorizeMain/resource/icons/card_prev.gif
similarity index 100%
rename from resource/icons/card_prev.gif
rename to out/production/jMemorizeMain/resource/icons/card_prev.gif
diff --git a/resource/icons/card_reset.gif b/out/production/jMemorizeMain/resource/icons/card_reset.gif
similarity index 100%
rename from resource/icons/card_reset.gif
rename to out/production/jMemorizeMain/resource/icons/card_reset.gif
diff --git a/resource/icons/category_add.gif b/out/production/jMemorizeMain/resource/icons/category_add.gif
similarity index 100%
rename from resource/icons/category_add.gif
rename to out/production/jMemorizeMain/resource/icons/category_add.gif
diff --git a/resource/icons/chart_curve.png b/out/production/jMemorizeMain/resource/icons/chart_curve.png
similarity index 100%
rename from resource/icons/chart_curve.png
rename to out/production/jMemorizeMain/resource/icons/chart_curve.png
diff --git a/resource/icons/edit_copy.gif b/out/production/jMemorizeMain/resource/icons/edit_copy.gif
similarity index 100%
rename from resource/icons/edit_copy.gif
rename to out/production/jMemorizeMain/resource/icons/edit_copy.gif
diff --git a/resource/icons/edit_cut.gif b/out/production/jMemorizeMain/resource/icons/edit_cut.gif
similarity index 100%
rename from resource/icons/edit_cut.gif
rename to out/production/jMemorizeMain/resource/icons/edit_cut.gif
diff --git a/resource/icons/edit_paste.gif b/out/production/jMemorizeMain/resource/icons/edit_paste.gif
similarity index 100%
rename from resource/icons/edit_paste.gif
rename to out/production/jMemorizeMain/resource/icons/edit_paste.gif
diff --git a/resource/icons/file_new.gif b/out/production/jMemorizeMain/resource/icons/file_new.gif
similarity index 100%
rename from resource/icons/file_new.gif
rename to out/production/jMemorizeMain/resource/icons/file_new.gif
diff --git a/resource/icons/file_open.gif b/out/production/jMemorizeMain/resource/icons/file_open.gif
similarity index 100%
rename from resource/icons/file_open.gif
rename to out/production/jMemorizeMain/resource/icons/file_open.gif
diff --git a/resource/icons/file_save.gif b/out/production/jMemorizeMain/resource/icons/file_save.gif
similarity index 100%
rename from resource/icons/file_save.gif
rename to out/production/jMemorizeMain/resource/icons/file_save.gif
diff --git a/resource/icons/file_saveas.gif b/out/production/jMemorizeMain/resource/icons/file_saveas.gif
similarity index 100%
rename from resource/icons/file_saveas.gif
rename to out/production/jMemorizeMain/resource/icons/file_saveas.gif
diff --git a/resource/icons/find.gif b/out/production/jMemorizeMain/resource/icons/find.gif
similarity index 100%
rename from resource/icons/find.gif
rename to out/production/jMemorizeMain/resource/icons/find.gif
diff --git a/resource/icons/folder.gif b/out/production/jMemorizeMain/resource/icons/folder.gif
similarity index 100%
rename from resource/icons/folder.gif
rename to out/production/jMemorizeMain/resource/icons/folder.gif
diff --git a/resource/icons/forcelearn.gif b/out/production/jMemorizeMain/resource/icons/forcelearn.gif
similarity index 100%
rename from resource/icons/forcelearn.gif
rename to out/production/jMemorizeMain/resource/icons/forcelearn.gif
diff --git a/out/production/jMemorizeMain/resource/icons/increase-font-16.png b/out/production/jMemorizeMain/resource/icons/increase-font-16.png
new file mode 100644
index 0000000..0ea951e
Binary files /dev/null and b/out/production/jMemorizeMain/resource/icons/increase-font-16.png differ
diff --git a/resource/icons/learn.gif b/out/production/jMemorizeMain/resource/icons/learn.gif
similarity index 100%
rename from resource/icons/learn.gif
rename to out/production/jMemorizeMain/resource/icons/learn.gif
diff --git a/resource/icons/main.png b/out/production/jMemorizeMain/resource/icons/main.png
similarity index 100%
rename from resource/icons/main.png
rename to out/production/jMemorizeMain/resource/icons/main.png
diff --git a/resource/icons/pdf.gif b/out/production/jMemorizeMain/resource/icons/pdf.gif
similarity index 100%
rename from resource/icons/pdf.gif
rename to out/production/jMemorizeMain/resource/icons/pdf.gif
diff --git a/resource/icons/picture.png b/out/production/jMemorizeMain/resource/icons/picture.png
similarity index 100%
rename from resource/icons/picture.png
rename to out/production/jMemorizeMain/resource/icons/picture.png
diff --git a/resource/icons/picture_add.png b/out/production/jMemorizeMain/resource/icons/picture_add.png
similarity index 100%
rename from resource/icons/picture_add.png
rename to out/production/jMemorizeMain/resource/icons/picture_add.png
diff --git a/resource/icons/picture_and_text.png b/out/production/jMemorizeMain/resource/icons/picture_and_text.png
similarity index 100%
rename from resource/icons/picture_and_text.png
rename to out/production/jMemorizeMain/resource/icons/picture_and_text.png
diff --git a/resource/icons/picture_delete.png b/out/production/jMemorizeMain/resource/icons/picture_delete.png
similarity index 100%
rename from resource/icons/picture_delete.png
rename to out/production/jMemorizeMain/resource/icons/picture_delete.png
diff --git a/resource/icons/remove.gif b/out/production/jMemorizeMain/resource/icons/remove.gif
similarity index 100%
rename from resource/icons/remove.gif
rename to out/production/jMemorizeMain/resource/icons/remove.gif
diff --git a/resource/icons/rtf.png b/out/production/jMemorizeMain/resource/icons/rtf.png
similarity index 100%
rename from resource/icons/rtf.png
rename to out/production/jMemorizeMain/resource/icons/rtf.png
diff --git a/resource/icons/settings.gif b/out/production/jMemorizeMain/resource/icons/settings.gif
similarity index 100%
rename from resource/icons/settings.gif
rename to out/production/jMemorizeMain/resource/icons/settings.gif
diff --git a/resource/icons/state_forgotten.gif b/out/production/jMemorizeMain/resource/icons/state_forgotten.gif
similarity index 100%
rename from resource/icons/state_forgotten.gif
rename to out/production/jMemorizeMain/resource/icons/state_forgotten.gif
diff --git a/resource/icons/state_no.gif b/out/production/jMemorizeMain/resource/icons/state_no.gif
similarity index 100%
rename from resource/icons/state_no.gif
rename to out/production/jMemorizeMain/resource/icons/state_no.gif
diff --git a/resource/icons/state_ok.gif b/out/production/jMemorizeMain/resource/icons/state_ok.gif
similarity index 100%
rename from resource/icons/state_ok.gif
rename to out/production/jMemorizeMain/resource/icons/state_ok.gif
diff --git a/resource/icons/state_soon.gif b/out/production/jMemorizeMain/resource/icons/state_soon.gif
similarity index 100%
rename from resource/icons/state_soon.gif
rename to out/production/jMemorizeMain/resource/icons/state_soon.gif
diff --git a/resource/icons/text.png b/out/production/jMemorizeMain/resource/icons/text.png
similarity index 100%
rename from resource/icons/text.png
rename to out/production/jMemorizeMain/resource/icons/text.png
diff --git a/resource/icons/text_bold.png b/out/production/jMemorizeMain/resource/icons/text_bold.png
similarity index 100%
rename from resource/icons/text_bold.png
rename to out/production/jMemorizeMain/resource/icons/text_bold.png
diff --git a/resource/icons/text_italic.png b/out/production/jMemorizeMain/resource/icons/text_italic.png
similarity index 100%
rename from resource/icons/text_italic.png
rename to out/production/jMemorizeMain/resource/icons/text_italic.png
diff --git a/resource/icons/text_subscript.png b/out/production/jMemorizeMain/resource/icons/text_subscript.png
similarity index 100%
rename from resource/icons/text_subscript.png
rename to out/production/jMemorizeMain/resource/icons/text_subscript.png
diff --git a/resource/icons/text_superscript.png b/out/production/jMemorizeMain/resource/icons/text_superscript.png
similarity index 100%
rename from resource/icons/text_superscript.png
rename to out/production/jMemorizeMain/resource/icons/text_superscript.png
diff --git a/resource/icons/text_underline.png b/out/production/jMemorizeMain/resource/icons/text_underline.png
similarity index 100%
rename from resource/icons/text_underline.png
rename to out/production/jMemorizeMain/resource/icons/text_underline.png
diff --git a/resource/icons/tree.gif b/out/production/jMemorizeMain/resource/icons/tree.gif
similarity index 100%
rename from resource/icons/tree.gif
rename to out/production/jMemorizeMain/resource/icons/tree.gif
diff --git a/resource/icons/warn.gif b/out/production/jMemorizeMain/resource/icons/warn.gif
similarity index 100%
rename from resource/icons/warn.gif
rename to out/production/jMemorizeMain/resource/icons/warn.gif
diff --git a/resource/text/changes.txt b/out/production/jMemorizeMain/resource/text/changes.txt
similarity index 100%
rename from resource/text/changes.txt
rename to out/production/jMemorizeMain/resource/text/changes.txt
diff --git a/resource/text/langs.txt b/out/production/jMemorizeMain/resource/text/langs.txt
similarity index 100%
rename from resource/text/langs.txt
rename to out/production/jMemorizeMain/resource/text/langs.txt
diff --git a/resource/text/translation_cs.properties b/out/production/jMemorizeMain/resource/text/translation_cs.properties
similarity index 100%
rename from resource/text/translation_cs.properties
rename to out/production/jMemorizeMain/resource/text/translation_cs.properties
diff --git a/resource/text/translation_da.properties b/out/production/jMemorizeMain/resource/text/translation_da.properties
similarity index 100%
rename from resource/text/translation_da.properties
rename to out/production/jMemorizeMain/resource/text/translation_da.properties
diff --git a/resource/text/translation_de.properties b/out/production/jMemorizeMain/resource/text/translation_de.properties
similarity index 100%
rename from resource/text/translation_de.properties
rename to out/production/jMemorizeMain/resource/text/translation_de.properties
diff --git a/resource/text/translation_en.properties b/out/production/jMemorizeMain/resource/text/translation_en.properties
similarity index 100%
rename from resource/text/translation_en.properties
rename to out/production/jMemorizeMain/resource/text/translation_en.properties
diff --git a/resource/text/translation_eo.properties b/out/production/jMemorizeMain/resource/text/translation_eo.properties
similarity index 100%
rename from resource/text/translation_eo.properties
rename to out/production/jMemorizeMain/resource/text/translation_eo.properties
diff --git a/resource/text/translation_es.properties b/out/production/jMemorizeMain/resource/text/translation_es.properties
similarity index 100%
rename from resource/text/translation_es.properties
rename to out/production/jMemorizeMain/resource/text/translation_es.properties
diff --git a/resource/text/translation_fr.properties b/out/production/jMemorizeMain/resource/text/translation_fr.properties
similarity index 100%
rename from resource/text/translation_fr.properties
rename to out/production/jMemorizeMain/resource/text/translation_fr.properties
diff --git a/resource/text/translation_ja.properties b/out/production/jMemorizeMain/resource/text/translation_ja.properties
similarity index 100%
rename from resource/text/translation_ja.properties
rename to out/production/jMemorizeMain/resource/text/translation_ja.properties
diff --git a/resource/text/translation_nl.native b/out/production/jMemorizeMain/resource/text/translation_nl.native
similarity index 100%
rename from resource/text/translation_nl.native
rename to out/production/jMemorizeMain/resource/text/translation_nl.native
diff --git a/resource/text/translation_no.native b/out/production/jMemorizeMain/resource/text/translation_no.native
similarity index 100%
rename from resource/text/translation_no.native
rename to out/production/jMemorizeMain/resource/text/translation_no.native
diff --git a/resource/text/translation_pl.properties b/out/production/jMemorizeMain/resource/text/translation_pl.properties
similarity index 100%
rename from resource/text/translation_pl.properties
rename to out/production/jMemorizeMain/resource/text/translation_pl.properties
diff --git a/resource/text/translation_pt.native b/out/production/jMemorizeMain/resource/text/translation_pt.native
similarity index 100%
rename from resource/text/translation_pt.native
rename to out/production/jMemorizeMain/resource/text/translation_pt.native
diff --git a/resource/text/translation_sv.native b/out/production/jMemorizeMain/resource/text/translation_sv.native
similarity index 100%
rename from resource/text/translation_sv.native
rename to out/production/jMemorizeMain/resource/text/translation_sv.native
diff --git a/resource/text/translation_tr.properties b/out/production/jMemorizeMain/resource/text/translation_tr.properties
similarity index 100%
rename from resource/text/translation_tr.properties
rename to out/production/jMemorizeMain/resource/text/translation_tr.properties
diff --git a/resource/text/translation_zh.properties b/out/production/jMemorizeMain/resource/text/translation_zh.properties
similarity index 100%
rename from resource/text/translation_zh.properties
rename to out/production/jMemorizeMain/resource/text/translation_zh.properties
diff --git a/src/jmemorize/gui/swing/actions/file/AbstractExportAction.java b/src/jmemorize/gui/swing/actions/file/AbstractExportAction.java
index 3063332..bc57351 100644
--- a/src/jmemorize/gui/swing/actions/file/AbstractExportAction.java
+++ b/src/jmemorize/gui/swing/actions/file/AbstractExportAction.java
@@ -129,6 +129,6 @@ public void actionPerformed(ActionEvent event)
}
}
- abstract protected void doExport(Lesson lesson, File file) throws IOException;
- abstract protected ExtensionFileFilter getFileFilter();
+ protected abstract void doExport(Lesson lesson, File file) throws IOException;
+ protected abstract ExtensionFileFilter getFileFilter();
}
diff --git a/src/jmemorize/gui/swing/actions/file/ExportToCSVAction.java b/src/jmemorize/gui/swing/actions/file/ExportToCSVAction.java
index 03acb41..7d52ea0 100644
--- a/src/jmemorize/gui/swing/actions/file/ExportToCSVAction.java
+++ b/src/jmemorize/gui/swing/actions/file/ExportToCSVAction.java
@@ -21,7 +21,7 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import jmemorize.core.Lesson;
import jmemorize.core.io.CsvBuilder;
@@ -47,7 +47,7 @@ public ExportToCSVAction()
protected void doExport(Lesson lesson, File file) throws IOException
{
FileOutputStream out = new FileOutputStream(file);
- CsvBuilder.exportLesson(out, lesson, ',', Charset.forName("UTF-8"));
+ CsvBuilder.exportLesson(out, lesson, ',', StandardCharsets.UTF_8);
}
/* (non-Javadoc)
diff --git a/src/jmemorize/gui/swing/actions/file/ImportCSVAction.java b/src/jmemorize/gui/swing/actions/file/ImportCSVAction.java
index a2914d8..bd72d20 100644
--- a/src/jmemorize/gui/swing/actions/file/ImportCSVAction.java
+++ b/src/jmemorize/gui/swing/actions/file/ImportCSVAction.java
@@ -58,7 +58,8 @@ public static Charset showCharsetChooser(JFrame owner)
JOptionPane.QUESTION_MESSAGE,
null,
charsets,
- "ISO-8859-1");
+ //"ISO-8859-1");
+ "UTF-8");
/*
* someone reported a bug (with stack tracke) where altough selection
diff --git a/src/jmemorize/gui/swing/actions/file/SaveLessonAction.java b/src/jmemorize/gui/swing/actions/file/SaveLessonAction.java
index d9ddf2d..f82241a 100644
--- a/src/jmemorize/gui/swing/actions/file/SaveLessonAction.java
+++ b/src/jmemorize/gui/swing/actions/file/SaveLessonAction.java
@@ -89,6 +89,7 @@ public void lessonClosed(Lesson lesson)
/* (non-Javadoc)
* @see jmemorize.gui.swing.actions.AbstractSessionDisabledAction
*/
+ @Override
protected void updateEnablement()
{
Main main = Main.getInstance();
diff --git a/src/jmemorize/gui/swing/panels/CardPanel.java b/src/jmemorize/gui/swing/panels/CardPanel.java
index e781784..b4204b1 100644
--- a/src/jmemorize/gui/swing/panels/CardPanel.java
+++ b/src/jmemorize/gui/swing/panels/CardPanel.java
@@ -83,7 +83,7 @@ public class CardPanel extends JPanel
{
/**
* A interface that allows to listen for textchanges to the card side text
- * panes. Use {@link CardPanel#addTextObserver} method to hook it to
+ * panes. Use method to hook it to
* the CardPanel.
*/
public interface CardPanelObserver
@@ -296,6 +296,32 @@ public void setStyle(MutableAttributeSet attr, boolean enabled)
StyleConstants.setUnderline(attr, enabled);
}
}
+
+ /**////////////////////////
+
+
+ public class IncreaseFontSizeAction extends AbstractStyledTextAction {
+ private static final int FONT_SIZE_INCREMENT = 2; // You can adjust this value as needed
+
+ public IncreaseFontSizeAction() {
+ super("increase-font-size");
+ addShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.CTRL_DOWN_MASK));
+ }
+
+ public boolean hasStyle(AttributeSet attr) {
+ return StyleConstants.getFontFamily(attr) != null;
+ }
+
+ public void setStyle(MutableAttributeSet attr, boolean enabled) {
+ int currentSize = StyleConstants.getFontSize(attr);
+ if (currentSize > 0) {
+ StyleConstants.setFontSize(attr, currentSize + FONT_SIZE_INCREMENT);
+ }
+ }
+ }
+
+ /**////////////////////////
+
private class SupAction extends AbstractStyledTextAction
{
@@ -673,7 +699,11 @@ private JToolBar buildEditToolbar()
toolBar.add(createButton(new UnderlineAction(), "text_underline.png"));
toolBar.add(createButton(new SupAction(), "text_superscript.png"));
toolBar.add(createButton(new SubAction(), "text_subscript.png"));
-
+
+ /******************/
+ toolBar.add(createButton(new IncreaseFontSizeAction(), "increase-font-16.png"));
+ /******************/
+
toolBar.addSeparator();
toolBar.add(createButton(new InsertImageAction(), "picture_add.png"));
toolBar.add(createButton(new RemoveImageAction(), "picture_delete.png"));
@@ -704,6 +734,9 @@ private JPopupMenu buildPopupMenu(boolean editable)
menu.add(createMenuItem(new UnderlineAction(), "Underline", "text_underline.png"));
menu.add(createMenuItem(new SupAction(), "Superscript", "text_superscript.png"));
menu.add(createMenuItem(new SubAction(), "Subscript", "text_subscript.png"));
+ /******************/
+ menu.add(createMenuItem(new IncreaseFontSizeAction(), "IncreaseFont", "increase-font-16.png"));
+ /******************/
}
return menu;
diff --git a/src/jmemorize/gui/swing/panels/CardSidePanel.java b/src/jmemorize/gui/swing/panels/CardSidePanel.java
index fe9ae6e..0e5c9ba 100644
--- a/src/jmemorize/gui/swing/panels/CardSidePanel.java
+++ b/src/jmemorize/gui/swing/panels/CardSidePanel.java
@@ -1,7 +1,7 @@
/*
* jMemorize - Learning made easy (and fun) - A Leitner flashcards tool
* Copyright(C) 2004-2008 Riad Djemili and contributors
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
@@ -18,23 +18,8 @@
*/
package jmemorize.gui.swing.panels;
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.GridLayout;
-import java.awt.Image;
-import java.awt.KeyboardFocusManager;
-import java.awt.Rectangle;
-import java.awt.RenderingHints;
-import java.awt.Toolkit;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
+import java.awt.*;
+import java.awt.event.*;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
@@ -90,45 +75,96 @@ public interface CardImageObserver
{
public void onImageChanged();
}
-
+
private class ScaledImagePanel extends JPanel
{
private Image m_image;
private int m_padding = 2;
+ private boolean m_isZoomed = false;
+ private double m_zoomPointX, m_zoomPointY;
+
+ private int m_lastLeft = Integer.MIN_VALUE;
+ private int m_lastLeftBoundary;
+ private int m_lastTop = Integer.MIN_VALUE;
+ private int m_lastTopBoundary;
+
+ private boolean m_isHovered = false;
+
+ ScaledImagePanel()
+ {
+ addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ if (SwingUtilities.isLeftMouseButton(e)) {
+ if (m_isHovered) {
+ m_isZoomed = !m_isZoomed;
+ m_zoomPointX = e.getX();
+ m_zoomPointY = e.getY();
+ repaint();
+ } else {
+ m_nextImageButton.doClick();
+ }
+ }
+ }
+ });
+
+ addMouseMotionListener(new MouseMotionAdapter() {
+ @Override
+ public void mouseMoved(MouseEvent e) {
+ if (m_image == null)
+ return;
+
+ if (m_lastLeft == Integer.MIN_VALUE)
+ calculateDimensions();
+
+ Point point = e.getPoint();
+
+ if (point.getX() >= m_lastLeft && point.getX() <= m_lastLeftBoundary &&
+ point.getY() >= m_lastTop && point.getY() <= m_lastTopBoundary)
+ {
+ m_isHovered = true;
+ Cursor cursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
+
+ setCursor(cursor);
+ }
+ else
+ {
+ m_isHovered = false;
+ Cursor cursor = Cursor.getDefaultCursor();
+
+ setCursor(cursor);
+ }
+ }
+ });
+ }
+
public void setImageToDisplay(Image imageToDisplay)
{
m_image = imageToDisplay;
}
- @Override
- protected void paintComponent(Graphics g)
- {
- super.paintComponent(g);
-
- if (m_image == null)
- return;
-
+ protected void calculateDimensions() {
int imgWidth = m_image.getWidth(null);
int imgHeight = m_image.getHeight(null);
-
+
Dimension dimension = getSize();
int w = dimension.width;
int h = dimension.height;
int padding = 0;
-
+
if (imgWidth > w || imgHeight > h)
{
float ratio = imgWidth / (float)w;
h = (int)(imgHeight / ratio);
-
+
if (h > dimension.height)
{
h = dimension.height;
ratio = imgHeight / (float)h;
w = (int)(imgWidth/ ratio);
}
-
+
padding = m_padding;
}
else
@@ -136,24 +172,50 @@ protected void paintComponent(Graphics g)
w = imgWidth;
h = imgHeight;
}
-
- int left = padding + (dimension.width - w) / 2;
- int top = padding + (dimension.height - h) / 2;
-
+
+ m_lastLeft = padding + (dimension.width - w) / 2;
+ m_lastTop = padding + (dimension.height - h) / 2;
+
+ m_lastLeftBoundary = m_lastLeft + w - 2*padding;
+ m_lastTopBoundary = m_lastTop + h - 2*padding;
+ }
+
+ @Override
+ protected void paintComponent(Graphics g)
+ {
+ super.paintComponent(g);
+
+ if (m_image == null)
+ return;
+
+ calculateDimensions();
+
if (g instanceof Graphics2D)
{
Graphics2D g2d = (Graphics2D)g;
-
+
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
- RenderingHints.VALUE_INTERPOLATION_BICUBIC);
+ RenderingHints.VALUE_INTERPOLATION_BICUBIC);
+
+ if (m_isZoomed)
+ {
+ double zoom = 2.0;
+
+ g2d.translate(m_zoomPointX, m_zoomPointY);
+ g2d.scale(zoom, zoom);
+ g2d.translate(-m_zoomPointX, -m_zoomPointY);
+ }
}
-
- g.drawImage(m_image,
- left, top, left + w - 2*padding, top + h - 2*padding,
- 0, 0, imgWidth, imgHeight, null);
+
+ int imgWidth = m_image.getWidth(null);
+ int imgHeight = m_image.getHeight(null);
+
+ g.drawImage(m_image,
+ m_lastLeft, m_lastTop, m_lastLeftBoundary, m_lastTopBoundary,
+ 0, 0, imgWidth, imgHeight, null);
}
}
-
+
private class MyEditorKit extends StyledEditorKit
{
public ViewFactory getViewFactory()
@@ -199,42 +261,42 @@ else if (kind.equals(StyleConstants.IconElementName))
}
}
}
-
+
private class CenteredBoxView extends BoxView
{
public CenteredBoxView(Element elem, int axis)
{
super(elem, axis);
}
-
+
/* (non-Javadoc)
* @see javax.swing.text.BoxView
*/
protected void layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
{
super.layoutMajorAxis(targetSpan, axis, offsets, spans);
-
+
int textBlockHeight = 0;
int offset = 0;
-
+
for (int i = 0; i < spans.length; i++)
{
textBlockHeight += spans[ i ];
}
-
+
offset = (targetSpan - textBlockHeight) / 2;
-
+
for (int i = 0; i < offsets.length; i++)
{
offsets[ i ] += offset;
}
}
}
-
+
private class SetImageModeAction implements ActionListener
{
private Mode m_mode;
-
+
public SetImageModeAction(Mode mode)
{
m_mode = mode;
@@ -245,9 +307,9 @@ public void actionPerformed(ActionEvent e)
setImageMode(m_mode);
}
}
-
+
private enum Mode {TEXT, IMAGE, TEXT_AND_IMAGE};
-
+
private JPanel m_contentPanel;
private JToolBar m_imageBar;
private JLabel m_imageLabel;
@@ -268,50 +330,50 @@ private enum Mode {TEXT, IMAGE, TEXT_AND_IMAGE};
private JButton m_textModeButton;
private JButton m_imageModeButton;
private JButton m_imageTexModeButton;
-
-
+
+
public CardSidePanel()
{
initComponents();
setupTabBehavior();
setupShiftBavior();
updateImage();
-
+
setImageMode(Mode.TEXT);
}
-
+
/**
* @return The text inside of the Frontside textpane.
*/
public FormattedText getText()
{
- return FormattedText.formatted(m_textPane.getStyledDocument());
+ return FormattedText.formatted(m_textPane.getStyledDocument());
}
-
+
public void setEditable(boolean editable)
{
m_textPane.setEditable(editable);
}
-
+
public void requestFocus()
{
m_textPane.requestFocus();
}
-
+
public void setCardFont(CardFont cardFont)
{
m_cardFont = cardFont;
m_textPane.setFont(cardFont.getFont());
-
+
FormattedText fText = getText();
m_textPane.setEditorKit(cardFont.isVerticallyCentered() ?
- new MyEditorKit() : new StyledEditorKit()); // HACK
+ new MyEditorKit() : new StyledEditorKit()); // HACK
setText(fText);
-
+
StyledDocument doc = (StyledDocument)m_textPane.getDocument();
setDocAlignment(doc, cardFont);
}
-
+
/**
* Sets the text of one EditorPane. Using EditorPane#setText caused some
* weird rendering artifacts. This methods fixes this by completly replacing
@@ -321,29 +383,29 @@ public Document setText(FormattedText text)
{
StyledDocument doc = text.getDocument();
m_textPane.setDocument(doc);
-
+
setDocAlignment(doc, m_cardFont);
-
+
clearInputAttributes(m_textPane);
-
+
// scroll to top
m_textPane.scrollRectToVisible(new Rectangle());
-
+
return doc;
}
-
+
public void setImages(List images)
{
m_images.clear();
-
+
for (ImageIcon image : images)
{
m_images.add(image);
}
-
+
m_currentImage = 0;
updateImage();
-
+
if (images.size() > 0) // HACK
{
if (m_mode != Mode.TEXT_AND_IMAGE && m_mode != Mode.IMAGE)
@@ -354,20 +416,20 @@ public void setImages(List images)
setImageMode(Mode.TEXT);
}
}
-
+
public void addImage(ImageIcon image)
{
m_images.add(image);
m_currentImage = m_images.size() - 1;
-
+
updateImage();
-
+
if (m_images.size() == 1)
setImageMode(Mode.TEXT_AND_IMAGE);
-
+
notifyImageObservers();
}
-
+
/**
* Removes the currently visible image.
*/
@@ -375,16 +437,16 @@ public void removeImage()
{
if (m_images.size() == 0)
return;
-
+
m_images.remove(m_currentImage);
-
+
if (m_currentImage > 0)
m_currentImage--;
-
+
updateImage();
notifyImageObservers();
}
-
+
/**
* @return a unmodifiable list of the images added to this card side.
*/
@@ -392,11 +454,11 @@ public List getImages()
{
return Collections.unmodifiableList(m_images);
}
-
+
public void addCaretListener(CaretListener listener)
{
m_textPane.addCaretListener(listener);
-
+
/*
* Our problem is that the TextPane inserts new CaretListeners at the
* first position. Because we add our text actions after the editor kit
@@ -410,65 +472,65 @@ public void addCaretListener(CaretListener listener)
*/
m_textPane.setEditorKit(m_textPane.getEditorKit());
}
-
+
public void addImageListener(CardImageObserver listener)
{
if (!m_imageObservers.contains(listener))
m_imageObservers.add(listener);
}
-
+
public JTextPane getTextPane()
{
return m_textPane;
}
-
+
private void notifyImageObservers()
{
for (CardImageObserver observer : m_imageObservers)
observer.onImageChanged();
}
-
+
private void setImageMode(Mode mode)
{
m_mode = mode;
-
+
m_textModeButton.setSelected(mode == Mode.TEXT);
m_imageModeButton.setSelected(mode == Mode.IMAGE);
m_imageTexModeButton.setSelected(mode == Mode.TEXT_AND_IMAGE);
-
+
m_contentPanel.removeAll();
-
+
// JScrollPane textScrollPane = new JScrollPane(m_textPane);
// textScrollPane.setBorder(null);
-
+
switch (mode)
{
- case TEXT:
- m_contentPanel.setLayout(new BorderLayout());
- m_contentPanel.add(m_textScrollPane, BorderLayout.CENTER);
- m_textPane.requestFocus();
- break;
-
- case IMAGE:
- m_contentPanel.setLayout(new BorderLayout());
- m_contentPanel.add(m_imagePanel, BorderLayout.CENTER);
- break;
-
- case TEXT_AND_IMAGE:
- m_contentPanel.setLayout(new GridLayout(1, 2));
- m_contentPanel.add(m_textScrollPane, BorderLayout.CENTER);
- m_contentPanel.add(m_imagePanel, BorderLayout.EAST);
- m_textPane.requestFocus();
- break;
+ case TEXT:
+ m_contentPanel.setLayout(new BorderLayout());
+ m_contentPanel.add(m_textScrollPane, BorderLayout.CENTER);
+ m_textPane.requestFocus();
+ break;
+
+ case IMAGE:
+ m_contentPanel.setLayout(new BorderLayout());
+ m_contentPanel.add(m_imagePanel, BorderLayout.CENTER);
+ break;
+
+ case TEXT_AND_IMAGE:
+ m_contentPanel.setLayout(new GridLayout(1, 2));
+ m_contentPanel.add(m_textScrollPane, BorderLayout.CENTER);
+ m_contentPanel.add(m_imagePanel, BorderLayout.EAST);
+ m_textPane.requestFocus();
+ break;
}
-
+
// Document doc = m_textPane.getDocument();
// m_textPane.setDocument(new DefaultStyledDocument());
// m_textPane.setDocument(doc);
-//
+//
m_imagePanel.validate();
m_textPane.validate();
-
+
m_contentPanel.validate();
m_contentPanel.repaint();
}
@@ -479,13 +541,13 @@ private void clearInputAttributes(JEditorPane editorPane)
MutableAttributeSet attr = kit.getInputAttributes();
attr.removeAttributes(attr.getAttributeNames());
}
-
+
private void setDocAlignment(StyledDocument doc, CardFont cardFont)
{
int swingAlign = StyleConstants.ALIGN_LEFT;
if (cardFont != null)
swingAlign = cardFont.getSwingAlign();
-
+
SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setAlignment(sas, swingAlign);
doc.setParagraphAttributes(0, doc.getLength() + 1, sas, false);
@@ -511,28 +573,28 @@ private void setupTabBehavior()
KeyStroke ctrlTab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, shortcutKey);
// insert tab with CTRL+TAB instead of TAB
m_textPane.getInputMap(JComponent.WHEN_FOCUSED).put(ctrlTab,
- DefaultEditorKit.insertTabAction);
+ DefaultEditorKit.insertTabAction);
}
-
+
private void setupShiftBavior()
{
int shift = InputEvent.SHIFT_DOWN_MASK;
-
+
InputMap inputMap = m_textPane.getInputMap(JComponent.WHEN_FOCUSED);
KeyStroke shiftDel = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, shift);
inputMap.put(shiftDel, DefaultEditorKit.deleteNextCharAction);
-
+
KeyStroke shiftBS = KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, shift);
inputMap.put(shiftBS, DefaultEditorKit.deletePrevCharAction);
}
-
+
private void updateImage()
{
int imgCount = m_images.size();
-
+
m_imageBar.setVisible(imgCount > 0);
-
+
if (imgCount == 0)
{
setImageMode(Mode.TEXT);
@@ -540,53 +602,44 @@ private void updateImage()
else
{
String text = String.format(" %s %d/%d ", //$NON-NLS-1$
- Localization.get(LC.IMAGE), m_currentImage + 1, imgCount);
-
+ Localization.get(LC.IMAGE), m_currentImage + 1, imgCount);
+
m_imageLabel.setText(text);
m_imagePanel.setImageToDisplay(m_images.get(m_currentImage).getImage());
m_imagePanel.repaint();
}
}
-
+
private void initComponents()
{
buildImageBar();
-
+
m_textPane.setBackground(ColorConstants.CARD_PANEL_COLOR);
-
+
m_textScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
m_textScrollPane.setBorder(null);
-
+
m_contentPanel = new JPanel(new BorderLayout());
-
+
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(m_contentPanel, BorderLayout.CENTER);
mainPanel.add(m_imageBar, BorderLayout.SOUTH);
-
+
m_imagePanel.setBackground(m_textPane.getBackground());
m_imagePanel.setForeground(m_textPane.getForeground());
-
- m_imagePanel.addMouseListener(new MouseAdapter(){
- @Override
- public void mousePressed(MouseEvent e)
- {
- if (SwingUtilities.isLeftMouseButton(e))
- m_nextImageButton.doClick();
- }
- });
-
+
// we want to use the default scrollpane border
Color color = UIManager.getColor("InternalFrame.borderShadow"); //$NON-NLS-1$
-
+
if (color == null)
{
color = new Color(167, 166, 170);
Main.getLogger().warning("UI key for card side border not found!"); //$NON-NLS-1$
}
-
+
Border border = new LineBorder(color);
mainPanel.setBorder(border);
-
+
setLayout(new BorderLayout());
add(mainPanel, BorderLayout.CENTER);
}
@@ -596,11 +649,11 @@ private void buildImageBar()
m_imageBar = new JToolBar();
m_imageBar.setBackground(ColorConstants.SIDEBAR_COLOR);
m_imageBar.setFloatable(false);
-
+
m_imageLabel = new JLabel();
m_imageLabel.setHorizontalAlignment(StyleConstants.ALIGN_LEFT);
m_imageBar.add(m_imageLabel);
-
+
m_prevImageButton = new JButton(loadIcon("arrow_left.png")); //$NON-NLS-1$
m_prevImageButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
@@ -609,13 +662,13 @@ public void actionPerformed(ActionEvent e)
m_currentImage--;
else
m_currentImage = m_images.size() - 1;
-
+
updateImage();
m_textPane.requestFocus();
}
});
m_imageBar.add(m_prevImageButton);
-
+
m_nextImageButton = new JButton(loadIcon("arrow_right.png")); //$NON-NLS-1$
m_nextImageButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
@@ -624,28 +677,28 @@ public void actionPerformed(ActionEvent e)
m_currentImage++;
else
m_currentImage = 0;
-
+
updateImage();
m_textPane.requestFocus();
}
});
m_imageBar.add(m_nextImageButton);
-
+
m_imageBar.addSeparator();
-
+
m_imageTexModeButton = new JButton(loadIcon("picture_and_text.png")); //$NON-NLS-1$
m_imageTexModeButton.addActionListener(new SetImageModeAction(Mode.TEXT_AND_IMAGE));
m_imageBar.add(m_imageTexModeButton);
-
+
m_textModeButton = new JButton(loadIcon("text.png")); //$NON-NLS-1$
m_imageBar.add(m_textModeButton);
m_textModeButton.addActionListener(new SetImageModeAction(Mode.TEXT));
-
+
m_imageModeButton = new JButton(loadIcon("picture.png")); //$NON-NLS-1$
m_imageBar.add(m_imageModeButton);
m_imageModeButton.addActionListener(new SetImageModeAction(Mode.IMAGE));
}
-
+
private ImageIcon loadIcon(String imgName)
{
String path = "/resource/icons/"+imgName; //$NON-NLS-1$
diff --git a/src/resource/about.png b/src/resource/about.png
new file mode 100644
index 0000000..2b7eb24
Binary files /dev/null and b/src/resource/about.png differ
diff --git a/src/resource/icons/application_split.png b/src/resource/icons/application_split.png
new file mode 100644
index 0000000..a91c78a
Binary files /dev/null and b/src/resource/icons/application_split.png differ
diff --git a/src/resource/icons/application_xp.png b/src/resource/icons/application_xp.png
new file mode 100644
index 0000000..d22860a
Binary files /dev/null and b/src/resource/icons/application_xp.png differ
diff --git a/src/resource/icons/arrow_left.png b/src/resource/icons/arrow_left.png
new file mode 100644
index 0000000..5dc6967
Binary files /dev/null and b/src/resource/icons/arrow_left.png differ
diff --git a/src/resource/icons/arrow_right.png b/src/resource/icons/arrow_right.png
new file mode 100644
index 0000000..b1a1819
Binary files /dev/null and b/src/resource/icons/arrow_right.png differ
diff --git a/src/resource/icons/blank.gif b/src/resource/icons/blank.gif
new file mode 100644
index 0000000..6b3588a
Binary files /dev/null and b/src/resource/icons/blank.gif differ
diff --git a/src/resource/icons/card_add.gif b/src/resource/icons/card_add.gif
new file mode 100644
index 0000000..252d7eb
Binary files /dev/null and b/src/resource/icons/card_add.gif differ
diff --git a/src/resource/icons/card_edit.gif b/src/resource/icons/card_edit.gif
new file mode 100644
index 0000000..feb8e94
Binary files /dev/null and b/src/resource/icons/card_edit.gif differ
diff --git a/src/resource/icons/card_flipped.gif b/src/resource/icons/card_flipped.gif
new file mode 100644
index 0000000..9f6c9b1
Binary files /dev/null and b/src/resource/icons/card_flipped.gif differ
diff --git a/src/resource/icons/card_next.gif b/src/resource/icons/card_next.gif
new file mode 100644
index 0000000..e2f8c3e
Binary files /dev/null and b/src/resource/icons/card_next.gif differ
diff --git a/src/resource/icons/card_prev.gif b/src/resource/icons/card_prev.gif
new file mode 100644
index 0000000..4fb4150
Binary files /dev/null and b/src/resource/icons/card_prev.gif differ
diff --git a/src/resource/icons/card_reset.gif b/src/resource/icons/card_reset.gif
new file mode 100644
index 0000000..725f84d
Binary files /dev/null and b/src/resource/icons/card_reset.gif differ
diff --git a/src/resource/icons/category_add.gif b/src/resource/icons/category_add.gif
new file mode 100644
index 0000000..f2c0079
Binary files /dev/null and b/src/resource/icons/category_add.gif differ
diff --git a/src/resource/icons/chart_curve.png b/src/resource/icons/chart_curve.png
new file mode 100644
index 0000000..01e933a
Binary files /dev/null and b/src/resource/icons/chart_curve.png differ
diff --git a/src/resource/icons/edit_copy.gif b/src/resource/icons/edit_copy.gif
new file mode 100644
index 0000000..71d7c95
Binary files /dev/null and b/src/resource/icons/edit_copy.gif differ
diff --git a/src/resource/icons/edit_cut.gif b/src/resource/icons/edit_cut.gif
new file mode 100644
index 0000000..d044e59
Binary files /dev/null and b/src/resource/icons/edit_cut.gif differ
diff --git a/src/resource/icons/edit_paste.gif b/src/resource/icons/edit_paste.gif
new file mode 100644
index 0000000..39dd4d9
Binary files /dev/null and b/src/resource/icons/edit_paste.gif differ
diff --git a/src/resource/icons/file_new.gif b/src/resource/icons/file_new.gif
new file mode 100644
index 0000000..7ccc6a7
Binary files /dev/null and b/src/resource/icons/file_new.gif differ
diff --git a/src/resource/icons/file_open.gif b/src/resource/icons/file_open.gif
new file mode 100644
index 0000000..ab602f2
Binary files /dev/null and b/src/resource/icons/file_open.gif differ
diff --git a/src/resource/icons/file_save.gif b/src/resource/icons/file_save.gif
new file mode 100644
index 0000000..499dd0c
Binary files /dev/null and b/src/resource/icons/file_save.gif differ
diff --git a/src/resource/icons/file_saveas.gif b/src/resource/icons/file_saveas.gif
new file mode 100644
index 0000000..466bfb1
Binary files /dev/null and b/src/resource/icons/file_saveas.gif differ
diff --git a/src/resource/icons/find.gif b/src/resource/icons/find.gif
new file mode 100644
index 0000000..a4548c5
Binary files /dev/null and b/src/resource/icons/find.gif differ
diff --git a/src/resource/icons/folder.gif b/src/resource/icons/folder.gif
new file mode 100644
index 0000000..beb6ed1
Binary files /dev/null and b/src/resource/icons/folder.gif differ
diff --git a/src/resource/icons/forcelearn.gif b/src/resource/icons/forcelearn.gif
new file mode 100644
index 0000000..be5584f
Binary files /dev/null and b/src/resource/icons/forcelearn.gif differ
diff --git a/src/resource/icons/increase-font-16.png b/src/resource/icons/increase-font-16.png
new file mode 100644
index 0000000..0ea951e
Binary files /dev/null and b/src/resource/icons/increase-font-16.png differ
diff --git a/src/resource/icons/learn.gif b/src/resource/icons/learn.gif
new file mode 100644
index 0000000..57f4102
Binary files /dev/null and b/src/resource/icons/learn.gif differ
diff --git a/src/resource/icons/main.png b/src/resource/icons/main.png
new file mode 100644
index 0000000..bf3af8b
Binary files /dev/null and b/src/resource/icons/main.png differ
diff --git a/src/resource/icons/pdf.gif b/src/resource/icons/pdf.gif
new file mode 100644
index 0000000..c70e898
Binary files /dev/null and b/src/resource/icons/pdf.gif differ
diff --git a/src/resource/icons/picture.png b/src/resource/icons/picture.png
new file mode 100644
index 0000000..4a158fe
Binary files /dev/null and b/src/resource/icons/picture.png differ
diff --git a/src/resource/icons/picture_add.png b/src/resource/icons/picture_add.png
new file mode 100644
index 0000000..d6d3f85
Binary files /dev/null and b/src/resource/icons/picture_add.png differ
diff --git a/src/resource/icons/picture_and_text.png b/src/resource/icons/picture_and_text.png
new file mode 100644
index 0000000..342b292
Binary files /dev/null and b/src/resource/icons/picture_and_text.png differ
diff --git a/src/resource/icons/picture_delete.png b/src/resource/icons/picture_delete.png
new file mode 100644
index 0000000..cca9f53
Binary files /dev/null and b/src/resource/icons/picture_delete.png differ
diff --git a/src/resource/icons/remove.gif b/src/resource/icons/remove.gif
new file mode 100644
index 0000000..b6922ac
Binary files /dev/null and b/src/resource/icons/remove.gif differ
diff --git a/src/resource/icons/rtf.png b/src/resource/icons/rtf.png
new file mode 100644
index 0000000..540441d
Binary files /dev/null and b/src/resource/icons/rtf.png differ
diff --git a/src/resource/icons/settings.gif b/src/resource/icons/settings.gif
new file mode 100644
index 0000000..b84df08
Binary files /dev/null and b/src/resource/icons/settings.gif differ
diff --git a/src/resource/icons/state_forgotten.gif b/src/resource/icons/state_forgotten.gif
new file mode 100644
index 0000000..f180a6f
Binary files /dev/null and b/src/resource/icons/state_forgotten.gif differ
diff --git a/src/resource/icons/state_no.gif b/src/resource/icons/state_no.gif
new file mode 100644
index 0000000..13263bf
Binary files /dev/null and b/src/resource/icons/state_no.gif differ
diff --git a/src/resource/icons/state_ok.gif b/src/resource/icons/state_ok.gif
new file mode 100644
index 0000000..f22090e
Binary files /dev/null and b/src/resource/icons/state_ok.gif differ
diff --git a/src/resource/icons/state_soon.gif b/src/resource/icons/state_soon.gif
new file mode 100644
index 0000000..f10232b
Binary files /dev/null and b/src/resource/icons/state_soon.gif differ
diff --git a/src/resource/icons/text.png b/src/resource/icons/text.png
new file mode 100644
index 0000000..813f712
Binary files /dev/null and b/src/resource/icons/text.png differ
diff --git a/src/resource/icons/text_bold.png b/src/resource/icons/text_bold.png
new file mode 100644
index 0000000..889ae80
Binary files /dev/null and b/src/resource/icons/text_bold.png differ
diff --git a/src/resource/icons/text_italic.png b/src/resource/icons/text_italic.png
new file mode 100644
index 0000000..8482ac8
Binary files /dev/null and b/src/resource/icons/text_italic.png differ
diff --git a/src/resource/icons/text_subscript.png b/src/resource/icons/text_subscript.png
new file mode 100644
index 0000000..1a2b010
Binary files /dev/null and b/src/resource/icons/text_subscript.png differ
diff --git a/src/resource/icons/text_superscript.png b/src/resource/icons/text_superscript.png
new file mode 100644
index 0000000..2fb2a7c
Binary files /dev/null and b/src/resource/icons/text_superscript.png differ
diff --git a/src/resource/icons/text_underline.png b/src/resource/icons/text_underline.png
new file mode 100644
index 0000000..90d0df2
Binary files /dev/null and b/src/resource/icons/text_underline.png differ
diff --git a/src/resource/icons/tree.gif b/src/resource/icons/tree.gif
new file mode 100644
index 0000000..91b9d5a
Binary files /dev/null and b/src/resource/icons/tree.gif differ
diff --git a/src/resource/icons/warn.gif b/src/resource/icons/warn.gif
new file mode 100644
index 0000000..98971a5
Binary files /dev/null and b/src/resource/icons/warn.gif differ
diff --git a/src/resource/text/changes.txt b/src/resource/text/changes.txt
new file mode 100644
index 0000000..64283f7
--- /dev/null
+++ b/src/resource/text/changes.txt
@@ -0,0 +1,73 @@
+
+ This file lists all changes to the translation keys in the version of
+ jMemorize.
+
+ : Version 1.4.0 (!?)
+
+ + MainFrame.RENAME
+ + MainFrame.RENAME_INPUT
+
+ : Version 1.3.0
+
+ + General.IMAGE
+ + LearnSettings.LEARN_SELECTED
+ + LearnSettings.SHUFFLE_RATIO
+ + LearnSettings.FIXED_EXPIRATION_TIME
+ + Preferences.ALIGNMENT
+ + Preferences.VERT_ALIGN
+ + Preferences.ALIGN_LEFT
+ + Preferences.ALIGN_CENTER
+ + Preferences.ALIGN_RIGHT
+ + SessionChart.THIS_SESSION
+ + SessionChart.AVERAGE_SESSION
+
+ : Version 1.2.3
+
+ + History.ACTION
+ + History.TITLE
+ + General.UNLEARNED
+ + General.EXPIRED
+
+ : Version 1.2.0
+
+ + General.MODIFIED
+ + StatusBar.PARTIAL
+ + Learn.CARD_PROGRESS
+ + Learn.SESSION_PROGRESS
+ + History.RECENT
+ + History.BY_DATE
+ + History.BY_WEEK
+ + History.BY_MONTH
+ + History.BY_YEAR
+ + History.DURATION
+
+ : Version 1.1.0
+
+ + Learn.SESSION_RESULTS
+ + URL.HOMEPAGE
+ + URL.MANUAL
+ + URL.FEATURE_TRACKER
+ + URL.BUG_TRACKER
+ + MainFrame.SELECT_CHARACTER_SET
+ + MainFrame.CHARACTER_SET
+ + Summary.LEARNED
+ + Summary.FAILED
+ + Summary.RELEARNED
+ + Summary.SKIPPED
+
+ : Version 1.0rc2
+
+ + MainFrame.CONFIRM_OVERWRITE_TITLE
+ + MainFrame.CONFIRM_OVERWRITE
+ + Strategy.CRAM_SCHEDULE
+ + MainFrame.IMPORT
+ + File.CSV
+ + File.TSV
+ ~ MainFrame.EXPORT (text changed from "Export from..." to "Export")
+ - MainFrame.EXPORT_DESC
+
+ : Version 1.0rc1
+
+ + MainFrame.EXPORT_CLEAN
+ + LearnSettings.BOTH_MODE
+
\ No newline at end of file
diff --git a/src/resource/text/langs.txt b/src/resource/text/langs.txt
new file mode 100644
index 0000000..227b99c
--- /dev/null
+++ b/src/resource/text/langs.txt
@@ -0,0 +1,15 @@
+cs
+da
+de
+en
+es
+eo
+fr
+nl
+no
+sv
+pl
+pt
+tr
+ja
+zh
\ No newline at end of file
diff --git a/src/resource/text/translation_cs.properties b/src/resource/text/translation_cs.properties
new file mode 100644
index 0000000..fb77ae0
--- /dev/null
+++ b/src/resource/text/translation_cs.properties
@@ -0,0 +1,335 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+#
+# ------------------------------------------------------------------------------
+# Author: Lukas Rypl (Lukas.Rypl@atlas.cz)
+# Language: Czech (cs)
+# jMemorize-Version: 1.2
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Kategorie
+General.CREATED = Vytvo\u0159eno
+General.MODIFIED = Upraveno
+General.EXPIRES = Opakov\u00e1n\u00ed
+General.LAST_TEST = Posledn\u00ed test
+General.DECK = Bal\u00ed\u010dek
+General.DECKS = Bal\u00ed\u010dky
+General.FRONTSIDE = L\u00edc (Ot\u00e1zka)
+General.FLIPSIDE = Rub (Odpov\u011b\u010f)
+General.OKAY = OK
+General.APPLY = Pou\u017e\u00edt
+General.CANCEL = Storno
+General.ROOT_CATEGORY = V\u0161e
+General.GENERAL = Obecn\u00e9
+General.PASSED = Hotovo
+
+General.EMPTY_SIDES_ALERT = Mus\u00ed b\u00fdt zad\u00e1ny ob\u011b strany.
+General.EMPTY_SIDES_ALERT_TITLE = Chyba zad\u00e1n\u00ed karty
+
+General.EXPIRED = K opakov\u00e1n\u00ed
+General.UNLEARNED = Nenau\u010den\u00e9
+
+# main frame
+
+MainFrame.ABOUT = Informace
+MainFrame.ABOUT_DESC = O probramu
+
+MainFrame.ADD_CARD = P\u0159idat kartu
+MainFrame.ADD_CARD_DESC = Vytvo\u0159it novou kartu
+
+MainFrame.ADD_CATEGORY = Vytvo\u0159it kategorii
+MainFrame.ADD_CATEGORY_DESC = P\u0159id\u00e1 novou kategorii
+MainFrame.ADD_CATEGORY_INPUT = Zadejte ozna\u010den\u00ed nov\u00e9 kategorie.
+
+MainFrame.CATEGORY_TREE = Strom
+MainFrame.CATEGORY_TREE_DESC = Zobrazit/skr\u00fdt stromovou strukturu kategori\u00ed
+
+MainFrame.COPY = Kop\u00edrovat
+MainFrame.CUT = Vyjmout
+MainFrame.PASTE = Vlo\u017eit
+MainFrame.DELETE = Odstranit
+
+MainFrame.DELETE_CARDS_WARN = Opravdu chcete odstranit {0} karet?
+MainFrame.DELETE_CARDS_WARN_TITLE = Odstran\u011bn\u00ed karet
+MainFrame.DELETE_CATEGORY_WARN = S odstran\u011bn\u00edm kategorie {0} bude vymaz\u00e1no {1} karet. Chcete opravdu prov\u00e9st odstran\u011bn\u00ed?
+
+MainFrame.EDIT_CARD = Upravit kartu
+MainFrame.EDIT_CARD_DESC = Upravit/zobrazit obsah karty
+
+MainFrame.ERROR_TITLE = Chyba
+MainFrame.ERROR_LOAD = P\u0159i otv\u00edr\u00e1n\u00ed souboru {0} do\u0161lo k chyb\u011b.
+MainFrame.ERROR_SAVE = P\u0159i ukl\u00e1d\u00e1n\u00ed souboru {0} do\u0161lo k chyb\u011b. Data nebyla ulo\u017eena.
+
+MainFrame.EXIT = Konec
+MainFrame.EXIT_DESC = Ukon\u010dit aplikaci
+
+MainFrame.FILE_FILTER_DESC = soubory jMemorize
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = Hledat
+MainFrame.FIND_DESC = Vyhled\u00e1v\u00e1n\u00ed karet
+
+MainFrame.LEARN = U\u010dit se
+MainFrame.LEARN_DESC = Za\u010d\u00edt u\u010den\u00ed se v\u0161emi neprostudovan\u00fdmi kartami a kartami ur\u010den\u00fdmi k opakov\u00e1n\u00ed.
+
+MainFrame.MENU_FILE = Soubor
+MainFrame.MENU_EDIT = Upravit
+MainFrame.MENU_HELP = N\u00e1pov\u011bda
+MainFrame.MENU_LESSON = Lekce
+
+MainFrame.NEW = Nov\u00fd
+MainFrame.NEW_DESC = Vytvo\u0159it novou lekci
+
+MainFrame.UNNAMED_LESSON = Nov\u00e1 lekce
+
+MainFrame.OPEN = Otev\u0159\u00edt
+MainFrame.OPEN_DESC = Otev\u0159\u00edt soubor s lekc\u00ed
+
+MainFrame.REMOVE_CATEGORY_TITLE = Odstranit kategorii
+MainFrame.REMOVE_DESC = Odstran\u011bn\u00ed ozna\u010den\u00fdch polo\u017eek
+
+MainFrame.RESET = Reset karty
+MainFrame.RESET_TITLE = Reset karty
+MainFrame.RESET_DESC = Ozna\u010den\u00ed karty jako nenau\u010den\u00e1
+MainFrame.RESET_WARN = Po resetu bude karta ozna\u010dena jako nenau\u010den\u00e1. Opravdu si p\u0159ejete prov\u00e9st reset? (po\u010det karet: {0})
+
+MainFrame.SAVE = Ulo\u017eit
+MainFrame.SAVE_DESC = Ulo\u017eit lekci
+MainFrame.SAVE_AS = Ulo\u017eit jako..
+MainFrame.SAVE_AS_DESC = Ulo\u017eit lekci jako..
+MainFrame.SAVE_MODIFIED = Lekce byla zm\u011bn\u011bna. Chcete j\u00ed ulo\u017eit?
+
+MainFrame.IMPORT = Import
+
+MainFrame.EXPORT = Export
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Export do *.pdf
+MainFrame.EXPORT_RTF_DESC = Export do *.rtf
+MainFrame.EXPORT_CLEAN = Lekce bez osobn\u00edch dat
+
+MainFrame.PREFERENCES = Nastaven\u00ed
+MainFrame.PREFERENCES_DESC = Nastaven\u00ed
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = P\u0159epsat soubor?
+MainFrame.CONFIRM_OVERWRITE = Soubor ji\u017e existuje. P\u0159ejete si ho p\u0159epsat?
+
+MainFrame.SELECT_CHARACTER_SET = Vyberte k\u00f3dovou sadu.
+MainFrame.CHARACTER_SET = Znakov\u00e1 sada
+
+# files
+
+File.CSV = \u010c\u00e1rkou odd\u011blen\u00e9 hodnoty - Comma Separated Values (*.csv)
+File.TSV = Tabul\u00e1torem odd\u011blen\u00e9 hodnoty - Tabular Separated Values (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = Domovsk\u00e1 str\u00e1nka
+URL.MANUAL = U\u017eivatelsk\u00fd manu\u00e1l
+URL.FEATURE_TRACKER = Feature tracker
+URL.BUG_TRACKER = Bug tracker
+
+# preferences
+
+Preferences.USE_GZIP = Ukl\u00e1dat lekce s kompres\u00ed GZIP.
+Preferences.LANGUAGE = Jazyk
+Preferences.RESTART = Zm\u011bna nastaven\u00ed jazyka se projev\u00ed a\u017e p\u0159i dal\u0161\u00edm spu\u0161t\u011bn\u00ed aplikace.
+
+Preferences.FONT_SETTINGS = Nastaven\u00ed p\u00edsma
+Preferences.FONT = Font
+Preferences.SIZE = Velikost
+Preferences.PREVIEW = N\u00e1hled
+
+# card table
+
+CardTable.COLUMNS = Sloupce
+CardTable.NO_DATE_DESC = Tato karta nebyla zkou\u0161ena.
+CardTable.NOT_LEARNED = nenau\u010deno
+CardTable.PATH = Cesta
+CardTable.SELECTED_CARDS = Vybran\u00e9 karty
+
+# deck chart
+
+DeckChart.CARDS = Karty
+DeckChart.START_DECK = Za\u010d\u00e1te\u010dn\u00ed bal\u00ed\u010dek
+DeckChart.SUMMARY = Souhrn
+DeckChart.EXPIRED_CARDS = Opakovat
+DeckChart.LEARNED_CARDS = Nau\u010den\u00e9 karty
+DeckChart.UNLEARNED_CARDS = Nenau\u010den\u00e9 karty
+
+Summary.LEARNED = Nau\u010den\u00e9
+Summary.FAILED = Chybn\u00e9
+Summary.RELEARNED = Znovu nau\u010den\u00e9
+Summary.SKIPPED = P\u0159esko\u010den\u00e9
+
+# deck table
+
+DeckTable.NEXT_DECK = Dal\u0161\u00ed bal\u00ed\u010dek
+DeckTable.NEXT_DECK_DESC = Zobrazit dal\u0161\u00ed bal\u00ed\u010dek.
+DeckTable.PREV_DECK = P\u0159edchoz\u00ed bal\u00ed\u010dek
+DeckTable.PREV_DECK_DESC = Zobrazit p\u0159edchoz\u00ed bal\u00ed\u010dek.
+
+# card editting
+
+EditCard.DETAILS_RATIO = M\u00edra \u00fasp\u011bchu
+EditCard.DETAILS_HISTORY = Historie u\u010den\u00ed
+
+EditCard.MODIFIED_WARN = Karty byly upraveny. Maj\u00ed se zaznamenat zm\u011bny?
+EditCard.MODIFIED_WARN_TITLE = Do\u0161lo k \u00faprav\u011b karet.
+
+EditCard.NEXT_CARD = Dal\u0161\u00ed karta
+EditCard.NEXT_CARD_DESC = Zobrazit dal\u0161\u00ed kartu
+
+EditCard.PREV_CARD = P\u0159edchoz\u00ed karta
+EditCard.PREV_CARD_DESC = Zobrazit p\u0159edchoz\u00ed kartu
+
+EditCard.REMOVE_CARD = Odstranit kartu
+EditCard.REMOVE_CARD_DESC = Odstranit aktu\u00e1ln\u00ed kartu
+
+EditCard.REMOVE_CARD_WARN = Opravdu chcete odstranit tuto kartu?
+EditCard.REMOVE_CARD_WARN_TITLE = Odstran\u011bn\u00ed karty
+
+EditCard.RESET_CARD = Reset karty
+EditCard.RESET_CARD_DESC = Reset karty
+EditCard.RESET_CARD_WARN = Resetnut\u00edm karty dojde k jej\u00edmu p\u0159esunut\u00ed zp\u011bt do prvn\u00edho bal\u00ed\u010dku\nOpravdu chcete prov\u00e9st tuto operaci?
+
+EditCard.TAB_SIDES = Strany
+EditCard.TAB_PROPERTIES = Vlastnosti
+
+# find tool
+
+FindTool.FIND = Hledat
+FindTool.BOTH_SIDES = Ob\u011b strany
+FindTool.MATCH_CASE = Rozli\u0161ovat VELK\u00c1/mal\u00e1 p\u00edsmena
+FindTool.RESULTS = V\u00fdsledky
+FindTool.SEARCH_TEXT = Hledan\u00fd text
+FindTool.SETTINGS = Nastaven\u00ed
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Jak\u00e1 je odpov\u011b\u010f na tuto ot\u00e1zku?
+Learn.DID_YOU_KNOW_ANSWER = Byla odpov\u011b\u010f spr\u00e1vn\u00e1?
+Learn.YES = Ano
+Learn.NO = Ne
+
+Learn.CARD_COUNTER = Po\u010det karet
+Learn.FLIPPED_CARD_SIDES = Zam\u011bn\u011bn\u00e9 strany
+Learn.SHOW_ANSWER = Zobrazit odpov\u011b\u010f
+Learn.SHOW_CATEGORY = Zobrazit kategorii
+Learn.SKIP_CARD = P\u0159esko\u010dit kartu
+Learn.STOP = Zastavit u\u010den\u00ed
+Learn.TIMER = \u010cas
+
+Learn.SESSION_RESULTS = V\u00fdsledky
+Learn.CARD_PROGRESS = V\u00fdvoj karet
+Learn.SESSION_PROGRESS = V\u00fdvoj relace
+
+# learn settings
+
+LearnSettings.ADVANCED = Pokro\u010dil\u00e9
+LearnSettings.SCHEDULING = Rozvrh
+
+LearnSettings.CARDS_TO_LEARN = V\u00fdb\u011br karet k u\u010den\u00ed
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Z karet doposud nenau\u010den\u00fdch a z karet ur\u010den\u00fdch k opakov\u00e1n\u00ed
+LearnSettings.LEARN_UNLEARNED = Z doposud nenau\u010den\u00fdch karet
+LearnSettings.LEARN_EXPIRED = Pouze z karet ur\u010den\u00fdch k opakov\u00e1n\u00ed
+
+LearnSettings.CARDS_ORDER = Po\u0159ad\u00ed karet
+LearnSettings.SHUFFLE_CARDS = Prom\u00edchat karty ze v\u0161ech hrom\u00e1dek a kategori\u00ed.
+LearnSettings.GROUP_CARDS = Seskupovat karty podle kategori\u00ed.
+LearnSettings.NATURAL_CATEGORY_ORDER = Zobrazovat kategorie v zadan\u00e9m po\u0159ad\u00ed.
+LearnSettings.RANDOM_CATEGORY_ORDER = Zobrazovat kategorie v n\u00e1hodn\u00e9m po\u0159ad\u00ed.
+
+LearnSettings.DELIMITERS = Omezen\u00ed
+LearnSettings.CARD_LIMIT = Omezen\u00ed po\u010dtu karet
+LearnSettings.CARD_LIMIT_TEXT = Omezen\u00ed po\u010dtu testovan\u00fdch karet b\u011bhem jedn\u00e9 relace.
+LearnSettings.TIME_LIMIT = Minutov\u00fd limit
+LearnSettings.TIME_LIMIT_TEXT = Ukon\u010di u\u010den\u00ed po uplynut\u00ed zadan\u00e9 doby.
+LearnSettings.DONT_RETEST_FAILED = Nezkou\u0161et z karet, kter\u00e9 byly \u0161patn\u011b zodpov\u011bzeny b\u011bhem t\u00e9to relace.
+
+LearnSettings.SCHEDULE_PRESETS = P\u0159ednastaven\u00ed \u010dasov\u00e9ho rozvrhu
+LearnSettings.DELAY_AFTER_LEVEL = Pauza po \u00farovni {0}
+LearnSettings.DAYS = Dn\u00ed
+LearnSettings.HOURS = Hodin
+LearnSettings.MINUTES = Minut
+
+LearnSettings.SIDE_MODE = Strany
+LearnSettings.NORMAL_MODE = Zkou\u0161et v b\u011b\u017en\u00e9m nastaven\u00ed
+LearnSettings.FLIP_MODE = Zkou\u0161et s obr\u00e1cen\u00fdm nastaven\u00edm stran.
+LearnSettings.RANDOM_MODE = Zkou\u0161et z n\u00e1hodn\u011b vyb\u00edran\u00fdch karet s n\u00e1hodn\u011b vybranou stranou.
+LearnSettings.BOTH_MODE = Zkou\u0161et ka\u017edou stranu podle nastaven\u00ed.
+
+LearnSettings.START = Zah\u00e1jit relaci
+LearnSettings.TITLE = Nastaven\u00ed
+
+# new card
+
+NewCard.ADD = P\u0159idat
+NewCard.ADD_AND_NEXT = P\u0159idat a vytvo\u0159it dal\u0161\u00ed
+
+NewCard.EDIT_RECENTLY = Upravit ned\u00e1vn\u00e9
+NewCard.EDIT_RECENTLY_DESC = Upravit ned\u00e1vno vytvo\u0159en\u00e9 karty
+
+NewCard.NEW_WINDOW = Nov\u00e9 okno
+NewCard.NEW_WINDOW_DESC = Otev\u0159\u00edt nov\u00e9 okno pro p\u0159id\u00e1n\u00ed karty
+
+NewCard.TITLE = Vytvo\u0159it kartu
+
+NewCard.CLOSE_WARN = Upozorn\u011bn\u00ed
+NewCardManager.DISMISSED_WARN = Chcete vytvo\u0159it kartu, aby nedo\u0161lo ke ztr\u00e1t\u011b zadan\u00fdch informac\u00ed p\u0159i zav\u0159en\u00ed okna?
+
+# status bar
+
+StatusBar.CARDS = Karty
+StatusBar.EXPIRED = K opakov\u00e1n\u00ed
+StatusBar.LEARNED = Nau\u010den\u00e9
+StatusBar.UNLEARNED = Nenau\u010den\u00e9
+StatusBar.PARTIAL = \u010c\u00e1ste\u010dn\u011b nau\u010den\u00e9
+
+StatusBar.LEARNING_CATEGORY = Kategorie
+StatusBar.CARDS_LEFT = Zb\u00fdvaj\u00edc\u00edch karet
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Linearn\u00ed (implicitn\u00ed)
+Strategy.CONSTANT_SCHEDULE = Konstantn\u00ed
+Strategy.EXPONENTIAL_SCHEDULE = Exponenci\u00e1ln\u00ed
+Strategy.QUADRATIC_SCHEDULE = Kvadratick\u00e1
+Strategy.CRAM_SCHEDULE = Biflovac\u00ed
+Strategy.CUSTOM_SCHEDULE = Voliteln\u00e1
+
+# time related
+
+Time.DAYS = dn\u00ed
+Time.ONE_DAY = jeden den
+Time.HOURS = hodin
+Time.ONE_HOUR = jedna hodina
+Time.MINUTES = minut
+Time.ONE_MINUTE = jedna minuta
+Time.SECONDS = sekund
+
+Time.PASSED = uplynulo
+
+Time.IN = zb\u00fdv\u00e1: {0}
+Time.AGO = uplynulo: {0}
+
+# learn history
+
+History.RECENT = Ned\u00e1vn\u00e9 relace
+History.BY_DATE = Relace podle data
+History.BY_WEEK = Relace podle t\u00fddn\u016f
+History.BY_MONTH = Relace podle m\u011bs\u00edc\u016f
+History.BY_YEAR = Relace podle let
+History.SESSION_DURATION = D\u00e9lka relac\u00ed
+History.ACTION = Zobrazit historii
+History.TITLE = Historie
+
+
diff --git a/src/resource/text/translation_da.properties b/src/resource/text/translation_da.properties
new file mode 100644
index 0000000..e58aa97
--- /dev/null
+++ b/src/resource/text/translation_da.properties
@@ -0,0 +1,290 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Adam Ehlers Nyholm Thomsen
+# Language: Danish (da)
+# jMemorize-Version: 1.0rc2
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Kategori
+General.CREATED = Oprettet
+General.EXPIRES = Udl\u00F8ber
+General.LAST_TEST = Sidste Test
+General.DECK = S\u00E6t
+General.DECKS = S\u00E6t
+General.FRONTSIDE = Forside
+General.FLIPSIDE = Bagside
+General.OKAY = OK
+General.APPLY = Anvend
+General.CANCEL = Annuller
+General.ROOT_CATEGORY = Alle
+General.GENERAL = Generelt
+
+General.EMPTY_SIDES_ALERT = Du skal skrive noget p\u00E5 begge side.
+General.EMPTY_SIDES_ALERT_TITLE = Kort sider ikke udfyldt
+
+# main frame
+
+MainFrame.ABOUT = Om
+MainFrame.ABOUT_DESC = Om dette program
+
+MainFrame.ADD_CARD = Tilf\u00F8j kort
+MainFrame.ADD_CARD_DESC = Tilf\u00F8j nyt kort
+
+MainFrame.ADD_CATEGORY = Tilf\u00F8j kategori
+MainFrame.ADD_CATEGORY_DESC = Tilf\u00F8j ny kategori
+MainFrame.ADD_CATEGORY_INPUT = Indtast navnet p\u00E5 den nye kategori som du \u00F8nsker at oprette.
+
+MainFrame.CATEGORY_TREE = Kategori tr\u00E6
+MainFrame.CATEGORY_TREE_DESC = Vis/Skjul kategori tr\u00E6et
+
+MainFrame.COPY = Kopier
+MainFrame.CUT = Klip
+MainFrame.PASTE = Inds\u00E6t
+MainFrame.DELETE = Slet
+
+MainFrame.DELETE_CARDS_WARN = Du er ved at slette {0} kort. \u00D8nsker du at forts\u00E6tte?
+MainFrame.DELETE_CARDS_WARN_TITLE = Kort sletning
+
+MainFrame.DELETE_CATEGORY_WARN = Hvis du sletter kategori {0} vil det slette {1} kort. \u00D8nsker du at forts\u00E6tte?
+
+MainFrame.EDIT_CARD = Rediger kort
+MainFrame.EDIT_CARD_DESC = Se og rediger kort detaljerne
+
+MainFrame.ERROR_TITLE = Fejl
+MainFrame.ERROR_LOAD = Der opstod en fejl under fors\u00F8get p\u00E5 at \u00E5bne filen: {0}.
+MainFrame.ERROR_SAVE = Der opstod en fejl under fors\u00F8get p\u00E5 at gemme filen {0}. Lektionen er ikke blevet gemt.
+
+MainFrame.EXIT = Afslut
+MainFrame.EXIT_DESC = Afslut programmet
+
+MainFrame.FILE_FILTER_DESC = jMemorize Lektioner
+
+MainFrame.FIND = S\u00F8g
+MainFrame.FIND_DESC = S\u00F8g efter kort
+
+MainFrame.LEARN = L\u00E6r
+MainFrame.LEARN_DESC = Begynd indl\u00E6ring med alle nye og udl\u00F8bne kort
+
+MainFrame.MENU_FILE = Fil
+MainFrame.MENU_EDIT = Rediger
+MainFrame.MENU_HELP = Hj\u00E6lp
+MainFrame.MENU_LESSON = Lektion
+
+MainFrame.NEW = Ny
+MainFrame.NEW_DESC = Opret tom lektion
+
+MainFrame.UNNAMED_LESSON = Ny Lektion
+
+MainFrame.OPEN = \u00C5ben
+MainFrame.OPEN_DESC = \u00C5ben lektions fil
+
+MainFrame.REMOVE_CATEGORY_TITLE = Sletning af kategori
+MainFrame.REMOVE_DESC = Slet markerede kategorier
+
+MainFrame.RESET = Reset kort
+MainFrame.RESET_DESC = Reset kort statistik
+MainFrame.RESET_WARN = Du er ved at resette {0} kort. \u00D8nsker du at forts\u00E6tte?
+
+MainFrame.SAVE = Gem
+MainFrame.SAVE_DESC = Gem lektion
+MainFrame.SAVE_AS = Gem som...
+MainFrame.SAVE_AS_DESC = Gem lektion som...
+MainFrame.SAVE_MODIFIED = Lektionen er blevet \u00E6ndret. \u00D8nsker du at gemme f\u00F8r afslutning?
+
+MainFrame.EXPORT = Eksporter til ...
+MainFrame.EXPORT_DESC = Eksporter lektion
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Eksporter til *.pdf
+MainFrame.EXPORT_RTF_DESC = Eksporter til *.rtf
+MainFrame.EXPORT_CLEAN = Eksporter til lektion uden personlige indl\u00E6rings oplysninger
+
+MainFrame.PREFERENCES = Indstillinger
+MainFrame.PREFERENCES_DESC = Ret dine indstillinger
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = Overskriv fil?
+MainFrame.CONFIRM_OVERWRITE = Filen eksisterer allerede. \u00D8nsker du at overskrive den?
+
+# preferences
+
+Preferences.USE_GZIP = Komprimer dine lektioner i GZIP format.
+Preferences.LANGUAGE = Sprog
+Preferences.RESTART = Dit nye sprogvalg vil tr\u00E6de i kraft n\u00E6ste gang du starter programmet.
+
+Preferences.FONT_SETTINGS = Skrifttype indstillinger
+Preferences.FONT = Skrifttype
+Preferences.SIZE = St\u00F8rrelse
+Preferences.PREVIEW = Forvisning
+
+# card table
+
+CardTable.COLUMNS = Kolonner
+CardTable.NO_DATE_DESC = Dette kort er ikke blevet testet.
+CardTable.NOT_LEARNED = ikke l\u00E6rt
+CardTable.PATH = Sti
+CardTable.SELECTED_CARDS = Valgte Kort
+
+# deck chart
+
+DeckChart.CARDS = Kort
+DeckChart.START_DECK = Start S\u00E6t
+DeckChart.SUMMARY = Oversigt
+DeckChart.EXPIRED_CARDS = Udl\u00F8bne Kort
+DeckChart.LEARNED_CARDS = Indl\u00E6rte Kort
+DeckChart.UNLEARNED_CARDS = Ul\u00E6rte Kort
+
+# deck table
+
+DeckTable.NEXT_DECK = N\u00E6ste S\u00E6t
+DeckTable.NEXT_DECK_DESC = Vis n\u00E6ste s\u00E6t
+DeckTable.PREV_DECK = Forrige S\u00E6t
+DeckTable.PREV_DECK_DESC = Vis forrige s\u00E6t
+
+# card editting
+
+EditCard.DETAILS_RATIO = Success rate
+EditCard.DETAILS_HISTORY = Indl\u00E6rings historie
+
+EditCard.MODIFIED_WARN = Kortet er blevet \u00E6ndret, \u00F8nsker du at anvede disse \u00E6ndringer f\u00F8r du forts\u00E6tter?
+EditCard.MODIFIED_WARN_TITLE = Kortet er blevet \u00E6ndret.
+
+EditCard.NEXT_CARD = N\u00E6ste Kort
+EditCard.NEXT_CARD_DESC = Vis n\u00E6ste kort
+
+EditCard.PREV_CARD = Forrige kort
+EditCard.PREV_CARD_DESC = Vis forrige kort
+
+EditCard.REMOVE_CARD = Slet kort
+EditCard.REMOVE_CARD_DESC = Slet nuv\u00E6rende kort
+
+EditCard.REMOVE_CARD_WARN = Er du sikker p\u00E5 du \u00F8nsker at slette dette kort?
+EditCard.REMOVE_CARD_WARN_TITLE = Sletning af Kort
+
+EditCard.RESET_CARD = Reset kort
+EditCard.RESET_CARD_DESC = Resetter det nuv\u00E6rende kort
+EditCard.RESET_CARD_WARN = At resette dette kort vil flytte det tilbage til f\u00F8rste s\u00E6t.\nEr du sikker?
+
+EditCard.TAB_SIDES = Sider
+EditCard.TAB_PROPERTIES = Egenskaber
+
+# find tool
+
+FindTool.FIND = S\u00F8g
+FindTool.BOTH_SIDES = Begge sider
+FindTool.MATCH_CASE = Tag hensyn til store og sm\u00E5 bogstaver
+FindTool.RESULTS = Resultater
+FindTool.SEARCH_TEXT = S\u00F8getekst
+FindTool.SETTINGS = Indstillinger
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Pr\u00F8v at huske svaret
+Learn.DID_YOU_KNOW_ANSWER = Kendte du svaret?
+Learn.YES = Ja
+Learn.NO = Nej
+
+Learn.CARD_COUNTER = Kort t\u00E6ller
+Learn.FLIPPED_CARD_SIDES = Omvendte kort sider
+Learn.SHOW_ANSWER = Vis svar
+Learn.SHOW_CATEGORY = Vis kategori
+Learn.SKIP_CARD = Spring kortet over
+Learn.STOP = Stop indl\u00E6ring
+Learn.TIMER = Tidst\u00E6ller
+
+# learn settings
+
+LearnSettings.ADVANCED = Avanceret
+LearnSettings.SCHEDULING = Kalender
+
+LearnSettings.CARDS_TO_LEARN = Kort som skal l\u00E6res
+LearnSettings.LEARN_UNLEARNED_EXPIRED = L\u00E6r alle ul\u00E6rte og udl\u00F8bne kort.
+LearnSettings.LEARN_UNLEARNED = L\u00E6r kun ul\u00E6rte kort.
+LearnSettings.LEARN_EXPIRED = L\u00E6r kun udl\u00F8bne kort.
+
+LearnSettings.CARDS_ORDER = Kort r\u00E6kkef\u00F8lge
+LearnSettings.SHUFFLE_CARDS = Bland kort fra alle s\u00E6t og kategorier.
+LearnSettings.GROUP_CARDS = Grupper kortene ved kategorier mens du l\u00E6rer.
+LearnSettings.NATURAL_CATEGORY_ORDER = Vis kategorierne i forh\u00E5ndsbestemt r\u00E6kkef\u00F8lge.
+LearnSettings.RANDOM_CATEGORY_ORDER = Vis kategorierne i tilf\u00E6ldig r\u00E6kkef\u00F8lge.
+
+LearnSettings.DELIMITERS = Afslutnings Kriterier
+LearnSettings.CARD_LIMIT = Kort gr\u00E6nse
+LearnSettings.CARD_LIMIT_TEXT = Stop indl\u00E6ring efter en vis kort gr\u00E6nse er n\u00E5et.
+LearnSettings.TIME_LIMIT = Minut gr\u00E6nse
+LearnSettings.TIME_LIMIT_TEXT = Stop indl\u00E6ring n\u00E5r en vis tidsgr\u00E6nse er n\u00E5et.
+LearnSettings.DONT_RETEST_FAILED = Gentest ikke kort som mislykkedes i denne indl\u00E6ringsrunde.
+
+LearnSettings.SCHEDULE_PRESETS = Kalender Forvalg
+LearnSettings.DELAY_AFTER_LEVEL = Forsinkelse efter niveau {0}
+LearnSettings.DAYS = Dage
+LearnSettings.HOURS = Timer
+LearnSettings.MINUTES = Minutter
+
+LearnSettings.SIDE_MODE = Side indstilling
+LearnSettings.NORMAL_MODE = Indl\u00E6ring som normalt.
+LearnSettings.FLIP_MODE = Indl\u00E6ring med omvendte kort sider.
+LearnSettings.RANDOM_MODE = Indl\u00E6ring med tilf\u00E6ldig indstilling, hvor nogle kort har omvendte sider mens andre ikke har.
+LearnSettings.BOTH_MODE = L\u00E6r hvert kort side s\u00E5 ofte som specificeret.
+
+
+LearnSettings.START = Start Indl\u00E6ring\!
+LearnSettings.TITLE = Indl\u00E6rings Indstillinger
+
+# new card
+
+NewCard.ADD = Tilf\u00F8j
+NewCard.ADD_AND_NEXT = Tilf\u00F8j og opret n\u00E6ste
+
+NewCard.EDIT_RECENTLY = Rediger nylig
+NewCard.EDIT_RECENTLY_DESC = Rediger nyligt oprettede kort
+
+NewCard.NEW_WINDOW = Nyt vindue
+NewCard.NEW_WINDOW_DESC = \u00C5ben et andet vindue
+
+NewCard.TITLE = Opret Kort
+
+NewCard.CLOSE_WARN = Advarsel
+NewCardManager.DISMISSED_WARN = Kort data er ved at blive slette.\n\u00D8nsker du at oprette kortet f\u00F8r vinduet bliver lukket?
+
+# status bar
+
+StatusBar.CARDS = Kort
+StatusBar.EXPIRED = Udl\u00F8bet
+StatusBar.LEARNED = Indl\u00E6rt
+StatusBar.UNLEARNED = Ul\u00E6rt
+
+StatusBar.LEARNING_CATEGORY = Indl\u00E6rings kategori
+StatusBar.CARDS_LEFT = Kort tilbage
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Line\u00E6r (Standard)
+Strategy.CONSTANT_SCHEDULE = Konstant
+Strategy.EXPONENTIAL_SCHEDULE = Eksponentiel
+Strategy.QUADRATIC_SCHEDULE = Kvadratisk
+Strategy.INTENSIVE_SCHEDULE = Intensiv
+Strategy.CUSTOM_SCHEDULE = Personlig
+
+# time related
+
+Time.DAYS = dage
+Time.ONE_DAY = en dag
+Time.HOURS = timer
+Time.ONE_HOUR = en time
+Time.MINUTES = minutter
+Time.ONE_MINUTE = et minut
+Time.SECONDS = sekunder
+
+Time.PASSED = passeret
+
+Time.IN = i {0}
+Time.AGO = {0} siden
\ No newline at end of file
diff --git a/src/resource/text/translation_de.properties b/src/resource/text/translation_de.properties
new file mode 100644
index 0000000..d0cc975
--- /dev/null
+++ b/src/resource/text/translation_de.properties
@@ -0,0 +1,347 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Riad Djemili
+# Language: German (de)
+# jMemorize-Version: 1.2.3
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Kategorie
+General.CREATED = Erstellt
+General.MODIFIED = Gendert
+General.EXPIRES = Luft ab
+General.LAST_TEST = Letzte Prfung
+General.DECK = Stapel
+General.DECKS = Stapel
+General.FRONTSIDE = Vorderseite
+General.FLIPSIDE = Rckseite
+General.OKAY = Okay
+General.APPLY = Anwenden
+General.CANCEL = Abbrechen
+General.ROOT_CATEGORY = Alle
+General.GENERAL = Allgemein
+General.PASSED = Treffer
+General.UNLEARNED = Ungelernt
+General.EXPIRED = Abgelaufen
+General.IMAGE = Bild
+
+General.EMPTY_SIDES_ALERT = Die Karte darf keine leeren Seiten haben.
+General.EMPTY_SIDES_ALERT_TITLE = Leere Kartenseite
+
+# main frame
+
+MainFrame.ABOUT = ber
+MainFrame.ABOUT_DESC = Informationen zu dieser Anwendung
+
+MainFrame.ADD_CARD = Neue Karte
+MainFrame.ADD_CARD_DESC = Fgt eine neue Karte hinzu
+
+MainFrame.ADD_CATEGORY = Neue Kategorie
+MainFrame.ADD_CATEGORY_DESC = Fgt eine neue Kategorie hinzu
+MainFrame.ADD_CATEGORY_INPUT = Geben Sie den Namen der neuen Kategorie ein.
+
+MainFrame.CATEGORY_TREE = Kategorienbaum
+MainFrame.CATEGORY_TREE_DESC = Kategorienbaum zeigen/verbergen
+
+MainFrame.COPY = Kopieren
+MainFrame.CUT = Ausschneiden
+MainFrame.PASTE = Einfgen
+MainFrame.DELETE = Lschen
+
+MainFrame.DELETE_CARDS_WARN = Es werden {0} Karten gelscht. Wollen Sie fortfahren?
+MainFrame.DELETE_CARDS_WARN_TITLE = Lschen von Karten
+MainFrame.DELETE_CATEGORY_WARN = Das Lschen der Kategorie {0} entfernt {1} Karten. Wollen Sie fortfahren?
+
+MainFrame.EDIT_CARD = Karte bearbeiten
+MainFrame.EDIT_CARD_DESC = Kartenseiten bearbeiten und Details anzeigen
+
+MainFrame.ERROR_TITLE = Fehler
+MainFrame.ERROR_LOAD = Whrend des Ladevorgangs von {0} ist ein Fehler aufgetreten.
+MainFrame.ERROR_SAVE = Whrend des Speichervorgangs von {0} ist ein Fehler aufgetreten.\n Datei wurde nicht gespeichert.
+
+MainFrame.EXIT = Beenden
+MainFrame.EXIT_DESC = Beenden der Anwendung
+
+MainFrame.FILE_FILTER_DESC = jMemorize-Lektionen
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = Suchen
+MainFrame.FIND_DESC = Karten suchen
+
+MainFrame.LEARN = Lernen
+MainFrame.LEARN_DESC = Starte eine Lernsitzung
+
+MainFrame.MENU_FILE = Datei
+MainFrame.MENU_EDIT = Bearbeiten
+MainFrame.MENU_HELP = Hilfe
+MainFrame.MENU_LESSON = Lektion
+
+MainFrame.NEW = Neu
+MainFrame.NEW_DESC = Neue Lektion erstellen
+
+MainFrame.UNNAMED_LESSON = Neue Lektion
+
+MainFrame.OPEN = ffnen
+MainFrame.OPEN_DESC = ffne eine Lektion
+
+MainFrame.REMOVE_CATEGORY_TITLE = Lschen von Kategorie
+MainFrame.REMOVE_DESC = Lscht die ausgewhlten Elemente
+
+MainFrame.RESET = Karte zurcksetzen
+MainFrame.RESET_DESC = Lscht alle Kartenstatistiken
+MainFrame.RESET_WARN = Es werden {0} Karten zurckgesetzt. Wollen Sie fortfahren?
+
+MainFrame.SAVE = Speichern
+MainFrame.SAVE_DESC = Lektion speichern
+MainFrame.SAVE_AS = Speichern als..
+MainFrame.SAVE_AS_DESC = Lektion speichern als..
+MainFrame.SAVE_MODIFIED = Lektion wurde verndert. Wollen Sie vor dem Beenden noch die Datei speichern?
+
+MainFrame.IMPORT = Importieren
+
+MainFrame.EXPORT = Exportieren
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Exportiere nach *.pdf
+MainFrame.EXPORT_RTF_DESC = Exportiere nach *.rtf
+MainFrame.EXPORT_CLEAN = Lektion ohne persnliche Lerndaten
+
+MainFrame.PREFERENCES = Einstellungen
+MainFrame.PREFERENCES_DESC = Nehmen Sie ihre Einstellungen vor
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = Datei berschreiben?
+MainFrame.CONFIRM_OVERWRITE = Datei existiert bereits. Wollen Sie die Datei berschreiben?
+
+MainFrame.SELECT_CHARACTER_SET = Bitte whlen Sie den Zeichensatz der Datei.
+MainFrame.CHARACTER_SET = Zeichensatz
+
+MainFrame.RENAME = Umbenennen
+MainFrame.RENAME_INPUT = Bitte geben Sie den neuen Namen ein.
+
+# files
+
+File.CSV = Comma Separated Values (*.csv)
+File.TSV = Tabular Separated Values (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = Homepage
+URL.MANUAL = Anleitung
+URL.FEATURE_TRACKER = Feature tracker
+URL.BUG_TRACKER = Bug tracker
+
+# preferences
+
+Preferences.USE_GZIP = Lektionen mit GZIP komprimieren.
+Preferences.LANGUAGE = Sprache
+Preferences.RESTART = Die neue Spracheinstellung erscheint mit dem nchsten Programmstart.
+
+Preferences.FONT_SETTINGS = Schrifteinstellungen
+Preferences.FONT = Schriftart
+Preferences.SIZE = Gre
+Preferences.PREVIEW = Vorschau
+
+Preferences.ALIGNMENT = Ausrichtung
+Preferences.ALIGN_LEFT = Links
+Preferences.ALIGN_CENTER = Mitte
+Preferences.ALIGN_RIGHT = Rechts
+Preferences.VERT_ALIGN = Vertikal zentrieren
+
+# card table
+
+CardTable.COLUMNS = Spalten
+CardTable.NO_DATE_DESC = Diese Karte wurde nicht gelernt.
+CardTable.NOT_LEARNED = nicht gelernt
+CardTable.PATH = Pfad
+CardTable.SELECTED_CARDS = Ausgewhlte Karten
+
+# deck chart
+
+DeckChart.CARDS = Karten
+DeckChart.START_DECK = Anfangsstapel
+DeckChart.SUMMARY = bersicht
+DeckChart.EXPIRED_CARDS = Abgelaufene Karten
+DeckChart.LEARNED_CARDS = Gelernte Karten
+DeckChart.UNLEARNED_CARDS = Ungelernte Karten
+
+Summary.LEARNED = Gelernt
+Summary.FAILED = Falsch
+Summary.RELEARNED = Wieder gelernt
+Summary.SKIPPED = bersprungen
+
+# session chart
+
+SessionChart.THIS_SESSION = Diese Sitzung
+SessionChart.AVERAGE_SESSION = Durchschnittliche Sitzung
+
+# deck table
+
+DeckTable.NEXT_DECK = Nchster Stapel
+DeckTable.NEXT_DECK_DESC = Zeige nchsten Stapel.
+DeckTable.PREV_DECK = Vorheriger Stapel
+DeckTable.PREV_DECK_DESC = Zeige vorherigen Stapel.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Erfolgsquote
+EditCard.DETAILS_HISTORY = Lernhistorie
+
+EditCard.MODIFIED_WARN = Die Karte wurde verndert. Wollen Sie die nderung bernehmen bevor sie fortfahren?
+EditCard.MODIFIED_WARN_TITLE = Karte wurde verndert
+
+EditCard.NEXT_CARD = Nchste Karte
+EditCard.NEXT_CARD_DESC = Zeige die nchste Karte
+
+EditCard.PREV_CARD = Vorherige Karte
+EditCard.PREV_CARD_DESC = Zeige die vorherige Karte
+
+EditCard.REMOVE_CARD = Karte lschen
+EditCard.REMOVE_CARD_DESC = Lsche diese Karte
+
+EditCard.REMOVE_CARD_WARN = Sind Sie sicher, dass diese Karte gelscht werden soll?
+EditCard.REMOVE_CARD_WARN_TITLE = Lschen der Karte
+
+EditCard.RESET_CARD = Karte zurcksetzen
+EditCard.RESET_CARD_DESC = Setzt diese Karte wieder in den Anfangsstapel zurck.
+EditCard.RESET_CARD_WARN = Diese Karte wird wieder in den Anfangsstapel gelegt.\nSind Sie sicher?
+
+EditCard.TAB_SIDES = Seiten
+EditCard.TAB_PROPERTIES = Eigenschaften
+
+# find tool
+
+FindTool.FIND = Suchen
+FindTool.BOTH_SIDES = Beide Seiten
+FindTool.MATCH_CASE = Gro-/Kleinschreibung beachten
+FindTool.RESULTS = Ergebnisse
+FindTool.SEARCH_TEXT = Suchtext
+FindTool.SETTINGS = Einstellungen
+
+# learn
+
+Learn.REMEMBER_THE_ANSWER = Versuchen Sie sich an die Antwort zu erinnern
+Learn.DID_YOU_KNOW_ANSWER = Wussten Sie die korrekte Antwort?
+Learn.YES = Ja
+Learn.NO = Nein
+
+Learn.CARD_COUNTER = Kartenzhler
+Learn.FLIPPED_CARD_SIDES = Verkehrte Kartenseiten
+Learn.SHOW_ANSWER = Zeige Antwort
+Learn.SHOW_CATEGORY = Zeige Kategorie
+Learn.SKIP_CARD = berspringen
+Learn.STOP = Lernen beenden
+Learn.TIMER = Stoppuhr
+
+Learn.SESSION_RESULTS = Sitzungsresultate
+Learn.CARD_PROGRESS = Kartenfortschritt
+Learn.SESSION_PROGRESS = Sitzungsfortschitt
+
+# learn settings
+
+LearnSettings.ADVANCED = Fortgeschritten
+LearnSettings.SCHEDULING = Zeitplanung
+
+LearnSettings.CARDS_TO_LEARN = Zu lernende Karten
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Alle ungelernten und abgelaufenen Karten lernen.
+LearnSettings.LEARN_UNLEARNED = Nur ungelernte Karten lernen.
+LearnSettings.LEARN_EXPIRED = Nur abgelaufene Karten lernen.
+LearnSettings.LEARN_SELECTED = Ausgewhlte Karten lernen.
+
+LearnSettings.CARDS_ORDER = Kartenreihenfolge
+LearnSettings.SHUFFLE_CARDS = Mische die Karten aller Stapel und Kategorien.
+LearnSettings.SHUFFLE_RATIO = Prozentualler Anteil an Karten, der nicht nach Kartenstapel sortiert werden sollen.
+LearnSettings.GROUP_CARDS = Karten nach Kategorien ordnen.
+LearnSettings.NATURAL_CATEGORY_ORDER = Kategorien in natrlicher Reihenfolge lernen.
+LearnSettings.RANDOM_CATEGORY_ORDER = Kategorien in zuflliger Reihenfolge lernen.
+
+LearnSettings.DELIMITERS = Limits
+LearnSettings.CARD_LIMIT = Kartenlimit
+LearnSettings.CARD_LIMIT_TEXT = Beende die Sitzung, wenn eine bestimmte Anzahl von Karten gelernt wurde.
+LearnSettings.TIME_LIMIT = Minutenlimit
+LearnSettings.TIME_LIMIT_TEXT = Beende die Sitzung, wenn eine bestimmte Zeit abgelaufen ist.
+LearnSettings.DONT_RETEST_FAILED = Karten, die falsch beantwortet wurden, innerhalb der Sitzung nicht nochmal lernen.
+
+LearnSettings.SCHEDULE_PRESETS = Voreinstellungen
+LearnSettings.DELAY_AFTER_LEVEL = Verzgerung nach Stufe {0}
+LearnSettings.DAYS = Tage
+LearnSettings.HOURS = Stunden
+LearnSettings.MINUTES = Minuten
+LearnSettings.FIXED_EXPIRATION_TIME = Verwende eine feste Stunde und Minute fr den Ablaufzeitpunkt.
+
+LearnSettings.SIDE_MODE = Seitenauswahl
+LearnSettings.NORMAL_MODE = Lerne mit normalen Seiten.
+LearnSettings.FLIP_MODE = Lerne mit vertauschten Seiten.
+LearnSettings.RANDOM_MODE = Lerne mit zufllig vertauschten Seiten.
+LearnSettings.BOTH_MODE = Lerne beide Seiten jeweils so oft wie angegeben.
+
+LearnSettings.START = Sitzung beginnen!
+LearnSettings.TITLE = Lerneinstellungen
+
+# new card
+
+NewCard.ADD = Erstellen
+NewCard.ADD_AND_NEXT = Erstellen und Nchste
+
+NewCard.EDIT_RECENTLY = Letzte bearbeiten
+NewCard.EDIT_RECENTLY_DESC = Bearbeiten der zuvor erzeugten Karten
+
+NewCard.NEW_WINDOW = Neues Fenster
+NewCard.NEW_WINDOW_DESC = Neues Kartenerstellungs-Fenster ffnen
+
+NewCard.TITLE = Neue Karte
+
+NewCard.CLOSE_WARN = Warnung
+NewCardManager.DISMISSED_WARN = Karte nicht erzeugt.\nWollen Sie die Karte erzeugen, bevor das Fenster geschlossen wird?
+
+# status bar
+
+StatusBar.CARDS = Karten
+StatusBar.EXPIRED = Abgelaufene
+StatusBar.LEARNED = Gelernte
+StatusBar.UNLEARNED = Ungelernte
+StatusBar.PARTIAL = Teilweise gelernt
+
+StatusBar.LEARNING_CATEGORY = Lerne Kategorie
+StatusBar.CARDS_LEFT = Karten brig
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Linear (Standard)
+Strategy.CONSTANT_SCHEDULE = Konstant
+Strategy.EXPONENTIAL_SCHEDULE = Exponentiell
+Strategy.QUADRATIC_SCHEDULE = Quadratisch
+Strategy.CRAM_SCHEDULE = Pauken
+Strategy.CUSTOM_SCHEDULE = Eigene
+
+# time
+
+Time.DAYS = Tagen
+Time.ONE_DAY = einem Tag
+Time.HOURS = Stunden
+Time.ONE_HOUR = einer Stunde
+Time.MINUTES = Minuten
+Time.ONE_MINUTE = einer Minute
+Time.SECONDS = Sekunden
+
+Time.PASSED = vorbei
+
+Time.IN = in {0}
+Time.AGO = vor {0}
+
+# learn history
+
+History.TITLE = Historie
+History.ACTION = Lernhistorie zeigen
+History.RECENT = Letzte Sitzungen
+History.BY_DATE = Sitzungen nach Tagen
+History.BY_WEEK = Sitzungen nach Woche
+History.BY_MONTH = Sitzungen nach Monat
+History.BY_YEAR = Sitzungen nach Jahr
+History.SESSION_DURATION = Sitzungslnge
diff --git a/src/resource/text/translation_en.properties b/src/resource/text/translation_en.properties
new file mode 100644
index 0000000..8eeb835
--- /dev/null
+++ b/src/resource/text/translation_en.properties
@@ -0,0 +1,348 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Riad Djemili
+# Language: English (en)
+# jMemorize-Version: 1.2.3
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Category
+General.CREATED = Created
+General.MODIFIED = Modified
+General.EXPIRES = Expires
+General.LAST_TEST = Last Test
+General.DECK = Deck
+General.DECKS = Decks
+General.FRONTSIDE = Frontside
+General.FLIPSIDE = Flipside
+General.OKAY = Okay
+General.APPLY = Apply
+General.CANCEL = Cancel
+General.ROOT_CATEGORY = All
+General.GENERAL = General
+General.PASSED = Passed
+General.UNLEARNED = Unlearned
+General.EXPIRED = Expired
+General.IMAGE = Image
+
+General.EMPTY_SIDES_ALERT = You need to specify both card sides.
+General.EMPTY_SIDES_ALERT_TITLE = Bad card sides
+
+# main frame
+
+MainFrame.ABOUT = About
+MainFrame.ABOUT_DESC = About this application
+
+MainFrame.ADD_CARD = Add card
+MainFrame.ADD_CARD_DESC = Add new card
+
+MainFrame.ADD_CATEGORY = Add category
+MainFrame.ADD_CATEGORY_DESC = Add new category
+MainFrame.ADD_CATEGORY_INPUT = Enter the name of the new category that you want to create.
+
+MainFrame.CATEGORY_TREE = Category tree
+MainFrame.CATEGORY_TREE_DESC = Show/Hide category tree
+
+MainFrame.COPY = Copy
+MainFrame.CUT = Cut
+MainFrame.PASTE = Paste
+MainFrame.DELETE = Delete
+
+MainFrame.DELETE_CARDS_WARN = You are about to delete {0} card(s). Do you want to continue?
+MainFrame.DELETE_CARDS_WARN_TITLE = Card Deletion
+MainFrame.DELETE_CATEGORY_WARN = Deleting category {0} will delete {1} cards. Do you want to continue?
+
+MainFrame.EDIT_CARD = Edit card
+MainFrame.EDIT_CARD_DESC = Edit and view card details
+
+MainFrame.ERROR_TITLE = Error
+MainFrame.ERROR_LOAD = An error occured while loading file {0}.
+MainFrame.ERROR_SAVE = An error occured while saving file {0}. Lesson has not been saved.
+
+MainFrame.EXIT = Exit
+MainFrame.EXIT_DESC = Exit application
+
+MainFrame.FILE_FILTER_DESC = jMemorize Lessons
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = Find
+MainFrame.FIND_DESC = Find cards
+
+MainFrame.LEARN = Learn
+MainFrame.LEARN_DESC = Start learning session with all unlearned and expired cards
+
+MainFrame.MENU_FILE = File
+MainFrame.MENU_EDIT = Edit
+MainFrame.MENU_HELP = Help
+MainFrame.MENU_LESSON = Lesson
+
+MainFrame.NEW = New
+MainFrame.NEW_DESC = Create empty lesson
+
+MainFrame.UNNAMED_LESSON = New lesson
+
+MainFrame.OPEN = Open
+MainFrame.OPEN_DESC = Open lesson file
+
+MainFrame.REMOVE_CATEGORY_TITLE = Category Deletion
+MainFrame.REMOVE_DESC = Remove currently selected item(s)
+
+MainFrame.RESET = Reset card
+MainFrame.RESET_DESC = Reset card statistics
+MainFrame.RESET_WARN = You are about to reset {0} card(s). Do you want to continue?
+
+MainFrame.SAVE = Save
+MainFrame.SAVE_DESC = Save lesson
+MainFrame.SAVE_AS = Save as..
+MainFrame.SAVE_AS_DESC = Save lesson as..
+MainFrame.SAVE_MODIFIED = Lesson has been modified. Do you want to save before exiting?
+
+MainFrame.IMPORT = Import
+
+MainFrame.EXPORT = Export
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Export to *.pdf
+MainFrame.EXPORT_RTF_DESC = Export to *.rtf
+MainFrame.EXPORT_CLEAN = Lesson without personal learn data
+
+MainFrame.PREFERENCES = Preferences
+MainFrame.PREFERENCES_DESC = Set your preferences
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = Overwrite file?
+MainFrame.CONFIRM_OVERWRITE = File already exists. Do you want to overwrite it?
+
+MainFrame.SELECT_CHARACTER_SET = Please select the character set of the file.
+MainFrame.CHARACTER_SET = Character set
+
+MainFrame.RENAME = Rename
+MainFrame.RENAME_INPUT = Please enter the new name.
+
+# files
+
+File.CSV = Comma Separated Values (*.csv)
+File.TSV = Tabular Separated Values (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = Homepage
+URL.MANUAL = User manual
+URL.FEATURE_TRACKER = Feature tracker
+URL.BUG_TRACKER = Bug tracker
+
+# preferences
+
+Preferences.USE_GZIP = Compress lessons in GZIP format.
+Preferences.LANGUAGE = Language
+Preferences.RESTART = Your new language selection will appear the next time you start the application.
+
+Preferences.FONT_SETTINGS = Font settings
+Preferences.FONT = Font
+Preferences.SIZE = Size
+Preferences.PREVIEW = Preview
+
+Preferences.ALIGNMENT = Alignment
+Preferences.ALIGN_LEFT = Left
+Preferences.ALIGN_CENTER = Center
+Preferences.ALIGN_RIGHT = Right
+Preferences.VERT_ALIGN = Center vertically
+
+# card table
+
+CardTable.COLUMNS = Columns
+CardTable.NO_DATE_DESC = This card has never been tested.
+CardTable.NOT_LEARNED = not learned
+CardTable.PATH = Path
+CardTable.SELECTED_CARDS = Selected cards
+
+# deck chart
+
+DeckChart.CARDS = Cards
+DeckChart.START_DECK = Start Deck
+DeckChart.SUMMARY = Summary
+DeckChart.EXPIRED_CARDS = Expired Cards
+DeckChart.LEARNED_CARDS = Learned Cards
+DeckChart.UNLEARNED_CARDS = Unlearned Cards
+
+Summary.LEARNED = Learned
+Summary.FAILED = Failed
+Summary.RELEARNED = Relearned
+Summary.SKIPPED = Skipped
+
+# session chart
+
+SessionChart.THIS_SESSION = This session
+SessionChart.AVERAGE_SESSION = Average session
+
+# deck table
+
+DeckTable.NEXT_DECK = Next deck
+DeckTable.NEXT_DECK_DESC = Display next deck.
+DeckTable.PREV_DECK = Previous deck
+DeckTable.PREV_DECK_DESC = Display previous deck.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Success ratio
+EditCard.DETAILS_HISTORY = Learn History
+
+EditCard.MODIFIED_WARN = Card entries have been modified. Do you want to apply them before continuing?
+EditCard.MODIFIED_WARN_TITLE = Card has been modified.
+
+EditCard.NEXT_CARD = Next card
+EditCard.NEXT_CARD_DESC = Display next card
+
+EditCard.PREV_CARD = Previous card
+EditCard.PREV_CARD_DESC = Display previous card
+
+EditCard.REMOVE_CARD = Remove card
+EditCard.REMOVE_CARD_DESC = Remove current card
+
+EditCard.REMOVE_CARD_WARN = Are you sure you want to delete this card?
+EditCard.REMOVE_CARD_WARN_TITLE = Card Deletion
+
+EditCard.RESET_CARD = Reset card
+EditCard.RESET_CARD_DESC = Resets current card
+EditCard.RESET_CARD_WARN = Resetting this card will move it back to the first deck.\nAre you sure?
+
+EditCard.TAB_SIDES = Sides
+EditCard.TAB_PROPERTIES = Properties
+
+# find tool
+
+FindTool.FIND = Search
+FindTool.BOTH_SIDES = Both sides
+FindTool.MATCH_CASE = Match case
+FindTool.RESULTS = Results
+FindTool.SEARCH_TEXT = Search text
+FindTool.SETTINGS = Settings
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Try to remember the answer
+Learn.DID_YOU_KNOW_ANSWER = Did you know the correct answer?
+Learn.YES = Yes
+Learn.NO = No
+
+Learn.CARD_COUNTER = Card counter
+Learn.FLIPPED_CARD_SIDES = Flipped card sides
+Learn.SHOW_ANSWER = Show answer
+Learn.SHOW_CATEGORY = Show category
+Learn.SKIP_CARD = Skip card
+Learn.STOP = Stop learning
+Learn.TIMER = Timer
+
+Learn.SESSION_RESULTS = Session Results
+Learn.CARD_PROGRESS = Card Progress
+Learn.SESSION_PROGRESS = Session Progress
+
+# learn settings
+
+LearnSettings.ADVANCED = Advanced
+LearnSettings.SCHEDULING = Scheduling
+
+LearnSettings.CARDS_TO_LEARN = Cards to learn
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Learn all unlearned and expired cards.
+LearnSettings.LEARN_UNLEARNED = Learn only unlearned cards.
+LearnSettings.LEARN_EXPIRED = Learn only expired cards.
+LearnSettings.LEARN_SELECTED = Learn selected cards.
+
+LearnSettings.CARDS_ORDER = Cards order
+LearnSettings.SHUFFLE_CARDS = Shuffle cards of all decks and categories.
+LearnSettings.SHUFFLE_RATIO = Percentage of cards that should not be sorted by their deck level.
+LearnSettings.GROUP_CARDS = Group cards by categories while learning.
+LearnSettings.NATURAL_CATEGORY_ORDER = Show categories in fixed natural order.
+LearnSettings.RANDOM_CATEGORY_ORDER = Show categories in random order.
+
+LearnSettings.DELIMITERS = Delimiters
+LearnSettings.CARD_LIMIT = Card limit
+LearnSettings.CARD_LIMIT_TEXT = Restrict number of cards to test this session to card limit.
+LearnSettings.TIME_LIMIT = Minute limit
+LearnSettings.TIME_LIMIT_TEXT = End session when a certain time limit has been reached.
+LearnSettings.DONT_RETEST_FAILED = Don't retest cards that have been failed in this session.
+
+LearnSettings.SCHEDULE_PRESETS = Schedule Presets
+LearnSettings.DELAY_AFTER_LEVEL = Delay after level {0}
+LearnSettings.DAYS = Days
+LearnSettings.HOURS = Hours
+LearnSettings.MINUTES = Minutes
+LearnSettings.FIXED_EXPIRATION_TIME = Use fixed expiration hour and minute.
+
+LearnSettings.SIDE_MODE = Side mode
+LearnSettings.NORMAL_MODE = Learn in normal mode.
+LearnSettings.FLIP_MODE = Learn with flipped card sides.
+LearnSettings.RANDOM_MODE = Learn in random mode with card sides being randomly flipped.
+LearnSettings.BOTH_MODE = Learn each card side as often as specified.
+
+LearnSettings.START = Start Session\!
+LearnSettings.TITLE = Learn settings
+
+# new card
+
+NewCard.ADD = Add
+NewCard.ADD_AND_NEXT = Add and create next
+
+NewCard.EDIT_RECENTLY = Edit recently
+NewCard.EDIT_RECENTLY_DESC = Edit recently created card
+
+NewCard.NEW_WINDOW = New window
+NewCard.NEW_WINDOW_DESC = Open another new add card window
+
+NewCard.TITLE = Create Card
+
+NewCard.CLOSE_WARN = Warning
+NewCardManager.DISMISSED_WARN = Card data is about to get dismissed.\nDo you want to create the card before the window is closed?
+
+# status bar
+
+StatusBar.CARDS = Cards
+StatusBar.EXPIRED = Expired
+StatusBar.LEARNED = Learned
+StatusBar.UNLEARNED = Unlearned
+StatusBar.PARTIAL = Partially learned
+
+StatusBar.LEARNING_CATEGORY = Learning category
+StatusBar.CARDS_LEFT = Cards left
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Linear (Default)
+Strategy.CONSTANT_SCHEDULE = Constant
+Strategy.EXPONENTIAL_SCHEDULE = Exponential
+Strategy.QUADRATIC_SCHEDULE = Quadratic
+Strategy.CRAM_SCHEDULE = Cram
+Strategy.CUSTOM_SCHEDULE = Custom
+
+# time related
+
+Time.DAYS = days
+Time.ONE_DAY = one day
+Time.HOURS = hours
+Time.ONE_HOUR = one hour
+Time.MINUTES = minutes
+Time.ONE_MINUTE = one minute
+Time.SECONDS = seconds
+
+Time.PASSED = passed
+
+Time.IN = in {0}
+Time.AGO = {0} ago
+
+# learn history
+
+History.TITLE = History
+History.ACTION = Show history
+History.RECENT = Recent sessions
+History.BY_DATE = Sessions by date
+History.BY_WEEK = Sessions by week
+History.BY_MONTH = Sessions by month
+History.BY_YEAR = Sessions by year
+History.SESSION_DURATION = Session Length
diff --git a/src/resource/text/translation_eo.properties b/src/resource/text/translation_eo.properties
new file mode 100644
index 0000000..89bbede
--- /dev/null
+++ b/src/resource/text/translation_eo.properties
@@ -0,0 +1,330 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Kristjan Schmidt
+# Language: Esperanto (eo)
+# jMemorize-Version: 1.2.3
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = kategorio
+General.CREATED = konstruita
+General.MODIFIED = alii\u011Dita
+General.EXPIRES = eksvalidas
+General.LAST_TEST = lasta testo
+General.DECK = staplo
+General.DECKS = staploj
+General.FRONTSIDE = anta\u016Da flanko
+General.FLIPSIDE = dorsa flanko
+General.OKAY = okej
+General.APPLY = uzi
+General.CANCEL = rompi
+General.ROOT_CATEGORY = \u0109iuj
+General.GENERAL = \u011Denerale
+General.PASSED = trafo
+General.UNLEARNED = nelernita
+General.EXPIRED = eksvalida
+
+General.EMPTY_SIDES_ALERT = La karto ne povas havi malplenan flankon.
+General.EMPTY_SIDES_ALERT_TITLE = malplena kartoflanko
+
+# main frame
+
+MainFrame.ABOUT = pri
+MainFrame.ABOUT_DESC = informoj pri \u0109i tiu programo
+
+MainFrame.ADD_CARD = nova karto
+MainFrame.ADD_CARD_DESC = aldoni novan karton
+
+MainFrame.ADD_CATEGORY = nova kategorio
+MainFrame.ADD_CATEGORY_DESC = aldoni novan kategorion
+MainFrame.ADD_CATEGORY_INPUT = Enigu nomon de la nova kategorio.
+
+MainFrame.CATEGORY_TREE = kategoriostrukturo
+MainFrame.CATEGORY_TREE_DESC = montri/ka\u015Di kategoriostrukturon
+
+MainFrame.COPY = kopii
+MainFrame.CUT = eltondi
+MainFrame.PASTE = enmeti
+MainFrame.DELETE = forigi
+
+MainFrame.DELETE_CARDS_WARN = {0} kartojn forigos. \u0108u vi volas da\u016Drigi?
+MainFrame.DELETE_CARDS_WARN_TITLE = forigi kartojn
+MainFrame.DELETE_CATEGORY_WARN = La forigo de la kategorio {0} forigas {1} karto(j)n. \u0108u vi volas da\u016Drigi?
+
+MainFrame.EDIT_CARD = redakti karton
+MainFrame.EDIT_CARD_DESC = redakti kartoflankojn kaj montri detalojn
+
+MainFrame.ERROR_TITLE = eraro
+MainFrame.ERROR_LOAD = Dum la \u015Dutado de {0} okazis eraro.
+MainFrame.ERROR_SAVE = Dum la konservoproceso {0} okazis eraro.\n La dosiero ne konservis.
+
+MainFrame.EXIT = eliro
+MainFrame.EXIT_DESC = fermi la programon
+
+MainFrame.FILE_FILTER_DESC = jMemorize-lecionoj
+MainFrame.PDF_FILE_FILTER_DESC =PDF - Portebla Dokument-Formato (*.pdf)
+
+MainFrame.FIND = ser\u0109i
+MainFrame.FIND_DESC = ser\u0109i kartojn
+
+MainFrame.LEARN = lerni
+MainFrame.LEARN_DESC = eki lernadon
+
+MainFrame.MENU_FILE = dosiero
+MainFrame.MENU_EDIT = redakti
+MainFrame.MENU_HELP = helpo
+MainFrame.MENU_LESSON = leciono
+
+MainFrame.NEW = nova
+MainFrame.NEW_DESC = konstrui novan lecionon
+
+MainFrame.UNNAMED_LESSON = nova leciono
+
+MainFrame.OPEN = malfermi
+MainFrame.OPEN_DESC = malfermi lecionon
+
+MainFrame.REMOVE_CATEGORY_TITLE = forigi kategorion
+MainFrame.REMOVE_DESC = forigas la selektitajn elementojn
+
+MainFrame.RESET = meti malanta\u016De
+MainFrame.RESET_DESC = forigi \u0109iuj kartojstatistikojn
+MainFrame.RESET_WARN = {0} karto(j)n metos malanta\u016De. \u0108u vi volas da\u016Drigi?
+
+MainFrame.SAVE = konservi
+MainFrame.SAVE_DESC = konservi lecionon
+MainFrame.SAVE_AS = konservi sub..
+MainFrame.SAVE_AS_DESC = konservi lecionon sub..
+MainFrame.SAVE_MODIFIED = La leciono estas \u015Dan\u011Dita. \u0108u vi volas konservi la dosieron anta\u016D la fermo de la programo?
+
+MainFrame.IMPORT = importi
+
+MainFrame.EXPORT = eksporti
+MainFrame.EXPORT_PDF = Portebla Dokument-Formato (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = eksporti al *.pdf
+MainFrame.EXPORT_RTF_DESC = eksporti al *.rtf
+MainFrame.EXPORT_CLEAN = lecionoj sen personaj lerndatoj
+
+MainFrame.PREFERENCES = agordoj
+MainFrame.PREFERENCES_DESC = Faru vian agordojn.
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = anstata\u016Digi dosieron?
+MainFrame.CONFIRM_OVERWRITE = Dosiero jam ekzistas. \u0108u vi volas anstata\u016Digi \u011Din?
+
+MainFrame.SELECT_CHARACTER_SET = Bonvole elektu karaktraron de la dosiero.
+MainFrame.CHARACTER_SET = karaktraron
+
+# files
+
+File.CSV = Komo-Separita Valoroj (*.csv)
+File.TSV = Tabelilo-Separita Valoroj (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = retpa\u011Daro
+URL.MANUAL = instruado
+URL.FEATURE_TRACKER = funkciopersekuto
+URL.BUG_TRACKER = eraropersekuto
+
+# preferences
+
+Preferences.USE_GZIP = Kunpremi lecionojn kun GZIP.
+Preferences.LANGUAGE = lingvo
+Preferences.RESTART = La nova lingvo aperos \u0109e la sekva starto de la programo.
+
+Preferences.FONT_SETTINGS = teksto-agordo
+Preferences.FONT = teksto-specio
+Preferences.SIZE = kvanto
+Preferences.PREVIEW = anta\u016Drigardo
+
+# card table
+
+CardTable.COLUMNS = kolonoj
+CardTable.NO_DATE_DESC = Tiu karto ne estas testita.
+CardTable.NOT_LEARNED = ne lernita
+CardTable.PATH = pado
+CardTable.SELECTED_CARDS = elektitaj kartoj
+
+# deck chart
+
+DeckChart.CARDS = kartoj
+DeckChart.START_DECK = komencostaplo
+DeckChart.SUMMARY = superrigardo
+DeckChart.EXPIRED_CARDS = eksvalidaj kartoj
+DeckChart.LEARNED_CARDS = lernitaj kartoj
+DeckChart.UNLEARNED_CARDS = nelernitaj kartoj
+
+Summary.LEARNED = lernita
+Summary.RELEARNED = denove lernita
+Summary.FAILED = falsa
+Summary.SKIPPED = ellasita
+
+# deck table
+
+DeckTable.NEXT_DECK = sekva staplo
+DeckTable.NEXT_DECK_DESC = Montru sekvan staplon.
+DeckTable.PREV_DECK = anta\u016Da staplo
+DeckTable.PREV_DECK_DESC = Montru anta\u016Dan staplon.
+
+# card editting
+
+EditCard.DETAILS_RATIO = sukcesokvoto
+EditCard.DETAILS_HISTORY = lernadohistorio
+
+EditCard.MODIFIED_WARN = La karto estas \u015Dan\u011Dita. \u0108u vi volas konservi la \u015Dan\u011Dojn anta\u016D da\u016Drigo?
+EditCard.MODIFIED_WARN_TITLE = la karto estas \u015Dan\u011Dita
+
+EditCard.NEXT_CARD = sekva karto
+EditCard.NEXT_CARD_DESC = montri sekvan karton
+
+EditCard.PREV_CARD = anta\u016Da karto
+EditCard.PREV_CARD_DESC = montri anta\u016Dan karton
+
+EditCard.REMOVE_CARD = forigi karton
+EditCard.REMOVE_CARD_DESC = forigi \u0109i tiun karton
+
+EditCard.REMOVE_CARD_WARN = \u0108u vi certe volas, ke tiu \u0109i karto forigos?
+EditCard.REMOVE_CARD_WARN_TITLE = forigi la karton
+
+EditCard.RESET_CARD = meti karton malanta\u016De
+EditCard.RESET_CARD_DESC = remeti la karton sur la unua staplo
+EditCard.RESET_CARD_WARN = \u0108i tiu karto remeti\u011Dos sur la unua staplo.\n\u0108u vi estas certe?
+
+EditCard.TAB_SIDES = pa\u011Doj
+EditCard.TAB_PROPERTIES = atributoj
+
+# find tool
+
+FindTool.FIND = ser\u0109i
+FindTool.BOTH_SIDES = amba\u016D flankoj
+FindTool.MATCH_CASE = atenti majuskligon kaj malmajuskligon
+FindTool.RESULTS = rezultoj
+FindTool.SEARCH_TEXT = ser\u0109oteksto
+FindTool.SETTINGS = agordoj
+
+# learn
+
+Learn.REMEMBER_THE_ANSWER = Rememoru la respondon.
+Learn.DID_YOU_KNOW_ANSWER = \u0108u vi sciis la \u011Dustan respondon?
+Learn.YES = jes
+Learn.NO = ne
+
+Learn.SHOW_ANSWER = montri
+Learn.SKIP_CARD = ellasi
+Learn.CARD_COUNTER = kartonombrilo
+Learn.FLIPPED_CARD_SIDES = inter\u015Dan\u011Ditaj kartoflankoj
+Learn.SHOW_CATEGORY = montri kategorion
+Learn.STOP = rompi lernadon
+Learn.TIMER = horlo\u011Do
+
+Learn.SESSION_RESULTS = sesioresulto
+Learn.CARD_PROGRESS = kartoprogreso
+Learn.SESSION_PROGRESS = sesioprogreso
+
+# learn settings
+
+LearnSettings.ADVANCED = progresinte
+LearnSettings.SCHEDULING = tempoplanado
+
+LearnSettings.CARDS_TO_LEARN = lernotaj kartoj
+LearnSettings.LEARN_UNLEARNED_EXPIRED = lerni nelernitajn kaj eksvalidajn kartojn
+LearnSettings.LEARN_UNLEARNED = lerni nur nelernitajn kartojn
+LearnSettings.LEARN_EXPIRED = lerni nur eksvalidajn kartojn
+
+LearnSettings.CARDS_ORDER = kartosinsekvo
+LearnSettings.SHUFFLE_CARDS = miksi la kartojn de \u0109iuj staploj kaj kategorioj
+LearnSettings.GROUP_CARDS = grupigi kartojn la\u016D kategorioj.
+LearnSettings.NATURAL_CATEGORY_ORDER = lerni kategorioj la\u016D natura sinsekvo.
+LearnSettings.RANDOM_CATEGORY_ORDER = lerni kategorioj la\u016D hazarda sinsekvo.
+
+LearnSettings.DELIMITERS = limito
+LearnSettings.CARD_LIMIT = kartolimito
+LearnSettings.CARD_LIMIT_TEXT = finigi la lernadon, kiam limigita nombro de kartoj estas atingita
+LearnSettings.TIME_LIMIT = minutolimito
+LearnSettings.TIME_LIMIT_TEXT = finigi la lernadon, kiam limigita tempo estas atingita
+LearnSettings.DONT_RETEST_FAILED = Ne ripeti kartojn kiuj ne respondis \u011Duste.
+
+LearnSettings.SCHEDULE_PRESETS = anta\u016Da tempoplanado-kalibrigoj
+LearnSettings.DELAY_AFTER_LEVEL = malfruigo la\u016D nivelo {0}
+LearnSettings.DAYS = tagoj
+LearnSettings.HOURS = horoj
+LearnSettings.MINUTES = minutoj
+
+LearnSettings.SIDE_MODE = flankoelekto
+LearnSettings.NORMAL_MODE = lerni kun normalaj flankoj
+LearnSettings.FLIP_MODE = lerni kun inter\u015Dan\u011Ditaj flankoj
+LearnSettings.RANDOM_MODE = lerni kun hazarde miksitaj flankoj
+LearnSettings.BOTH_MODE = Lernu amba\u016D flankoj pokaze tiom ofte kiel indikita.
+
+LearnSettings.START = komenci lernadon
+LearnSettings.TITLE = lernadokalibrigoj
+
+# new card
+
+NewCard.ADD = aldoni
+NewCard.ADD_AND_NEXT = aldoni kaj konstrui sekvan
+
+NewCard.EDIT_RECENTLY = redakti anta\u016Dan
+NewCard.EDIT_RECENTLY_DESC = redakti la anta\u016De produktitajn kartojn
+
+NewCard.NEW_WINDOW = nova fenestro
+NewCard.NEW_WINDOW_DESC = malfermi fenestron por produkti novan karton
+
+NewCard.TITLE = konstrui korton
+
+NewCard.CLOSE_WARN = averto
+NewCardManager.DISMISSED_WARN = La karto ne estas finprodukta.\n\u0108u vi volas finprodukti la karton anta\u016D la fenestro fermi\u011Das?
+
+# status bar
+
+StatusBar.CARDS = kartoj
+StatusBar.EXPIRED = eksvalida
+StatusBar.LEARNED = lernita
+StatusBar.UNLEARNED = nelernita
+StatusBar.PARTIAL = parte lernita
+
+StatusBar.LEARNING_CATEGORY = lerni kategorion
+StatusBar.CARDS_LEFT = kartoj restas
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = lineare (kutime)
+Strategy.CONSTANT_SCHEDULE = konstante
+Strategy.EXPONENTIAL_SCHEDULE = eksponenciale
+Strategy.QUADRATIC_SCHEDULE = kvadrate
+Strategy.CRAM_SCHEDULE = lernade
+Strategy.CUSTOM_SCHEDULE = propre
+
+# time
+
+Time.DAYS = tagoj
+Time.ONE_DAY = unu tago
+Time.HOURS = horoj
+Time.ONE_HOUR = unu horo
+Time.MINUTES = minutoj
+Time.ONE_MINUTE = unu minuto
+Time.SECONDS = sekundoj
+
+Time.PASSED = pasinta
+
+Time.IN = en {0}
+Time.AGO = anta\u016D {0}
+
+# learn history
+
+History.ACTION = montru historion
+History.TITLE = historio
+History.RECENT = pasinta sesio
+History.BY_DATE = sesioj la\u016D tagoj
+History.BY_WEEK = sesioj la\u016D semajno
+History.BY_MONTH = sesioj la\u016D monato
+History.BY_YEAR = sesioj la\u016D jaro
+History.SESSION_DURATION = sesioda\u016Dro
+
diff --git a/src/resource/text/translation_es.properties b/src/resource/text/translation_es.properties
new file mode 100644
index 0000000..ab40cc6
--- /dev/null
+++ b/src/resource/text/translation_es.properties
@@ -0,0 +1,330 @@
+#
+# Esta es un archivo de traduccin para el jMemorize (http://jmemorize.org)
+#
+# ------------------------------------------------------------------------------
+# Autor: Ren Maya
+# Idioma: Espaol (es)
+# jMemorize-Versin: 1.2.3
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Categoria
+General.CREATED = Creado
+General.MODIFIED = Modificado
+General.EXPIRES = Expira
+General.LAST_TEST = ltima Evaluacin
+General.DECK = Maso
+General.DECKS = Masos
+General.FRONTSIDE = Frente
+General.FLIPSIDE = Revs
+General.OKAY = Bien
+General.APPLY = Aplicar
+General.CANCEL = Cancelar
+General.ROOT_CATEGORY = Todos
+General.GENERAL = General
+General.PASSED = Aprobado
+General.UNLEARNED = Olvidado
+General.EXPIRED = Expirado
+
+General.EMPTY_SIDES_ALERT = Necesita llenar ambas caras de la tarjeta.
+General.EMPTY_SIDES_ALERT_TITLE = Error en las caras de la tarjeta
+
+# main frame
+
+MainFrame.ABOUT = Acerca
+MainFrame.ABOUT_DESC = Acerca de este programa
+
+MainFrame.ADD_CARD = Aadir tarjeta
+MainFrame.ADD_CARD_DESC = Aadir tarjeta nueva
+
+MainFrame.ADD_CATEGORY = Aadir categora
+MainFrame.ADD_CATEGORY_DESC = Aadir categora nueva
+MainFrame.ADD_CATEGORY_INPUT = Ingrese el nombre de la nueva categora que desea crear.
+
+MainFrame.CATEGORY_TREE = ndice de categorias
+MainFrame.CATEGORY_TREE_DESC = Mostrar/Ocultar el ndice de categorias
+
+MainFrame.COPY = Copiar
+MainFrame.CUT = Cortar
+MainFrame.PASTE = Pegar
+MainFrame.DELETE = Borrar
+
+MainFrame.DELETE_CARDS_WARN = Est por borrar {0} tarjeta(s). Desa contiunar?
+MainFrame.DELETE_CARDS_WARN_TITLE = Borrar Tarjeta
+MainFrame.DELETE_CATEGORY_WARN = Al borrar la categora {0} borrar tambin {1} tarjetas. Desa continuar?
+
+MainFrame.EDIT_CARD = Editar tarjeta
+MainFrame.EDIT_CARD_DESC = Editar y ver los detalles de la tarjeta
+
+MainFrame.ERROR_TITLE = Error
+MainFrame.ERROR_LOAD = Se produjo un error al cargar el archivo {0}.
+MainFrame.ERROR_SAVE = Se produjo un error al guardar el archivo {0}. La leccin no se ha guardado.
+
+MainFrame.EXIT = Salir
+MainFrame.EXIT_DESC = Salir del programa
+
+MainFrame.FILE_FILTER_DESC = Lecciones del jMemorize
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = Encontrar
+MainFrame.FIND_DESC = Encontrar tarjetas
+
+MainFrame.LEARN = Aprender
+MainFrame.LEARN_DESC = Inicie sesiones de aprendizaje con todas las tarjetas no aprendidas o expiradas
+
+MainFrame.MENU_FILE = Archivo
+MainFrame.MENU_EDIT = Editar
+MainFrame.MENU_HELP = Ayuda
+MainFrame.MENU_LESSON = Leccin
+
+MainFrame.NEW = Nueva
+MainFrame.NEW_DESC = Crear una leccin en blanco
+
+MainFrame.UNNAMED_LESSON = Nueva leccin
+
+MainFrame.OPEN = Abrir
+MainFrame.OPEN_DESC = Abrir el archivo de una leccin
+
+MainFrame.REMOVE_CATEGORY_TITLE = Borrar una Categora
+MainFrame.REMOVE_DESC = Remover los objetos seleccionados
+
+MainFrame.RESET = Restablcer tarjeta
+MainFrame.RESET_DESC = Restablecer la estadistica de las tarjetas
+MainFrame.RESET_WARN = Est por restablecer {0} tarjeta(s). Desa continuar?
+
+MainFrame.SAVE = Guardar
+MainFrame.SAVE_DESC = Guardar leccin
+MainFrame.SAVE_AS = Guardar como...
+MainFrame.SAVE_AS_DESC = Guardar leccin como...
+MainFrame.SAVE_MODIFIED = Se ha modificado la leccin. Desa guardarla antes de salir del programa?
+
+MainFrame.IMPORT = Importar
+
+MainFrame.EXPORT = Exportar
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Exportar a *.pdf
+MainFrame.EXPORT_RTF_DESC = Exportar a *.rtf
+MainFrame.EXPORT_CLEAN = Leccin sin informacin personar de aprendizaje
+
+MainFrame.PREFERENCES = Preferencias
+MainFrame.PREFERENCES_DESC = Ajuste sus preferencias
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = Sobreescribir el archivo?
+MainFrame.CONFIRM_OVERWRITE = El archivo ya existe. Desa sobreescribirlo?
+
+MainFrame.SELECT_CHARACTER_SET = Por favor seleccione el tipo de letra del archivo.
+MainFrame.CHARACTER_SET = Seleccin de tipo de letra
+
+# files
+
+File.CSV = Valores separados por una coma (*.csv)
+File.TSV = Valores separados por un espacio (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = Pgina de Inicio
+URL.MANUAL = Manual de usuario
+URL.FEATURE_TRACKER = Rastreador de caractersticas
+URL.BUG_TRACKER = Rastreador de problemas
+
+# preferences
+
+Preferences.USE_GZIP = Comprimir las lecciones en formato GZIP.
+Preferences.LANGUAGE = Idioma
+Preferences.RESTART = Su idioma seleccionado aparecer la prxima vez que inicie el programa.
+
+Preferences.FONT_SETTINGS = Ajustes de Letra
+Preferences.FONT = Tipo de letra
+Preferences.SIZE = Tamao
+Preferences.PREVIEW = Vista previa
+
+# card table
+
+CardTable.COLUMNS = Columnas
+CardTable.NO_DATE_DESC = Esta tarjeta no ha sido probada.
+CardTable.NOT_LEARNED = No se ha aprendido
+CardTable.PATH = Sendero
+CardTable.SELECTED_CARDS = Tarjetas seleccionadas
+
+# deck chart
+
+DeckChart.CARDS = Tarjetas
+DeckChart.START_DECK = Inicie el maso
+DeckChart.SUMMARY = Resmen
+DeckChart.EXPIRED_CARDS = Tarjetas Expiradas
+DeckChart.LEARNED_CARDS = Tarjetas Aprendidas
+DeckChart.UNLEARNED_CARDS = Tarjeta Olvidadas
+
+Summary.LEARNED = Aprendido
+Summary.FAILED = Fallado
+Summary.RELEARNED = Reaprendido
+Summary.SKIPPED = Saltado
+
+# deck table
+
+DeckTable.NEXT_DECK = Siguiente maso
+DeckTable.NEXT_DECK_DESC = Mostrar el siguiente maso.
+DeckTable.PREV_DECK = Maso anterior
+DeckTable.PREV_DECK_DESC = Mostrar el maso anterior.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Relacin de xito
+EditCard.DETAILS_HISTORY = Historial de aprendizaje
+
+EditCard.MODIFIED_WARN = La entrada de la tarjeta han sido modificada. Desa aplicar los cambios antes de continuar?
+EditCard.MODIFIED_WARN_TITLE = La tarjeta ha sido modificada.
+
+EditCard.NEXT_CARD = Siguiente tarjeta
+EditCard.NEXT_CARD_DESC = Mostrar la siguiente tarjeta
+
+EditCard.PREV_CARD = Tarjeta anterior
+EditCard.PREV_CARD_DESC = Mostrar la tarjeta anterior
+
+EditCard.REMOVE_CARD = Borrar la tarjeta
+EditCard.REMOVE_CARD_DESC = Borrar la tarjeta actual
+
+EditCard.REMOVE_CARD_WARN = Est seguro de que desea borrar esta tarjeta?
+EditCard.REMOVE_CARD_WARN_TITLE = Borrar Tarjeta
+
+EditCard.RESET_CARD = Restablecer la tarjeta
+EditCard.RESET_CARD_DESC = Restablecer la tarjeta actual
+EditCard.RESET_CARD_WARN = El restablecer esta tarjeta la mover al primer maso.\nEst seguro?
+
+EditCard.TAB_SIDES = Caras
+EditCard.TAB_PROPERTIES = Propiedades
+
+# find tool
+
+FindTool.FIND = Buscar
+FindTool.BOTH_SIDES = Ambas caras
+FindTool.MATCH_CASE = Coincidencia exacta
+FindTool.RESULTS = Resultados
+FindTool.SEARCH_TEXT = Texto a buscar
+FindTool.SETTINGS = Ajustes
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Intente recordar la respuesta
+Learn.DID_YOU_KNOW_ANSWER = Saba la respuesta correcta?
+Learn.YES = S
+Learn.NO = No
+
+Learn.CARD_COUNTER = Contador de Tarjetas
+Learn.FLIPPED_CARD_SIDES = Caras volteadas
+Learn.SHOW_ANSWER = Mostrar la respuesta
+Learn.SHOW_CATEGORY = Mostrar la categora
+Learn.SKIP_CARD = Saltar tarjeta
+Learn.STOP = Parar de aprender
+Learn.TIMER = Temporizador
+
+Learn.SESSION_RESULTS = Resultados de la sesin
+Learn.CARD_PROGRESS = Progreso en las tarjetas
+Learn.SESSION_PROGRESS = Progreso de la sesin
+
+# learn settings
+
+LearnSettings.ADVANCED = Avanzado
+LearnSettings.SCHEDULING = Programar
+
+LearnSettings.CARDS_TO_LEARN = Tarjetas a aprender
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Aprender todas las tarjetas olvidadas o expiradas.
+LearnSettings.LEARN_UNLEARNED = Aprender slo las tarjetas olvidadas.
+LearnSettings.LEARN_EXPIRED = Aprender slo las tarjetas expiradas.
+
+LearnSettings.CARDS_ORDER = Orden de las tarjetas
+LearnSettings.SHUFFLE_CARDS = Barajar las tarjetas de todos los masos y categorias.
+LearnSettings.GROUP_CARDS = Agrupar las tarjetas por categorias mientras aprende.
+LearnSettings.NATURAL_CATEGORY_ORDER = Mostrar las categorias en el orden fijado naturalmente.
+LearnSettings.RANDOM_CATEGORY_ORDER = Mostrar las categorias al azar.
+
+LearnSettings.DELIMITERS = Delimitadores
+LearnSettings.CARD_LIMIT = Lmite de tarjetas
+LearnSettings.CARD_LIMIT_TEXT = Restringir el nmero de tarjetas a preguntar en esta sesin segn el lmite de tarjetas.
+LearnSettings.TIME_LIMIT = Lmite de minutos
+LearnSettings.TIME_LIMIT_TEXT = Terminar la sesin cuando se termine el lmite de tiempo.
+LearnSettings.DONT_RETEST_FAILED = No volver a preguntar aquellas tarjetas que se hayan reprobado en esta sesin.
+
+LearnSettings.SCHEDULE_PRESETS = Definicin de la agenda
+LearnSettings.DELAY_AFTER_LEVEL = Retrazar segn el nivel {0}
+LearnSettings.DAYS = Das
+LearnSettings.HOURS = Horas
+LearnSettings.MINUTES = Minutos
+
+LearnSettings.SIDE_MODE = Modo de las caras
+LearnSettings.NORMAL_MODE = Aprender en el modo normal.
+LearnSettings.FLIP_MODE = Aprender con las tarjetas volteadas.
+LearnSettings.RANDOM_MODE = Aprender en modo aleatorio con las tarjetas volteadas al azar.
+LearnSettings.BOTH_MODE = Aprender cada lado de la tarjeta tantas veces como se especifique.
+
+LearnSettings.START = Iniciar sesin\!
+LearnSettings.TITLE = Ajustes de aprendizaje
+
+# new card
+
+NewCard.ADD = Aadir
+NewCard.ADD_AND_NEXT = Aadir y crear la siguiente
+
+NewCard.EDIT_RECENTLY = Modificar la ms reciente
+NewCard.EDIT_RECENTLY_DESC = Modificar la tarjeta creada ms recientemente
+
+NewCard.NEW_WINDOW = Ventana nueva
+NewCard.NEW_WINDOW_DESC = Abrir otra ventana de 'aadir nueva tarjeta'
+
+NewCard.TITLE = Crear tarjeta
+
+NewCard.CLOSE_WARN = Advertencia
+NewCardManager.DISMISSED_WARN = La informacin de la tarjeta se descartar.\nDesa crear la tarjeta antes de cerrar la ventana?
+
+# status bar
+
+StatusBar.CARDS = Tarjetas
+StatusBar.EXPIRED = Expiradas
+StatusBar.LEARNED = Aprendidas
+StatusBar.UNLEARNED = Olvidadas
+StatusBar.PARTIAL = Parcialmente aprendidas
+
+StatusBar.LEARNING_CATEGORY = Categora de aprendizaje
+StatusBar.CARDS_LEFT = Tarjetas restantes
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Lineal (Por defecto)
+Strategy.CONSTANT_SCHEDULE = Constante
+Strategy.EXPONENTIAL_SCHEDULE = Exponencial
+Strategy.QUADRATIC_SCHEDULE = Cuadrtica
+Strategy.CRAM_SCHEDULE = Meter
+Strategy.CUSTOM_SCHEDULE = Modificado
+
+# time related
+
+Time.DAYS = das
+Time.ONE_DAY = un da
+Time.HOURS = horas
+Time.ONE_HOUR = una hora
+Time.MINUTES = minutos
+Time.ONE_MINUTE = un minuto
+Time.SECONDS = segundos
+
+Time.PASSED = aprobado
+
+Time.IN = en {0}
+Time.AGO = {0} hace
+
+# learn history
+
+History.TITLE = Historial
+History.ACTION = Mostrar historial
+History.RECENT = Sesiones recientes
+History.BY_DATE = Sesiones por da
+History.BY_WEEK = Sesiones por semanana
+History.BY_MONTH = Sesiones por mes
+History.BY_YEAR = Sesiones por ao
+History.SESSION_DURATION = Duracin de la sesin
diff --git a/src/resource/text/translation_fr.properties b/src/resource/text/translation_fr.properties
new file mode 100644
index 0000000..eff1a11
--- /dev/null
+++ b/src/resource/text/translation_fr.properties
@@ -0,0 +1,280 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Authors: MILLE.ca
+# Language: French (fr)
+# jMemorize-Version: 0.9.2
+# ------------------------------------------------------------------------------
+#
+# general
+
+General.CATEGORY = Catgorie
+General.CREATED = Cr
+General.EXPIRES = Expir
+General.LAST_TEST = Dernier exercise effectu
+General.DECK = Jeu de cartes
+General.DECKS = Jeux de cartes
+General.FRONTSIDE = Recto
+General.FLIPSIDE = Verso
+General.OKAY = Ok
+General.APPLY = Appliquer
+General.CANCEL = Annuler
+General.ROOT_CATEGORY = Toutes
+General.GENERAL = Gnral
+
+General.EMPTY_SIDES_ALERT = Vous devez spcifier les deux cts de la carte.
+General.EMPTY_SIDES_ALERT_TITLE = Mauvais cts de la carte
+
+# main frame
+
+MainFrame.ABOUT = propos
+MainFrame.ABOUT_DESC = propos de cette application
+
+MainFrame.ADD_CARD = Ajouter une carte
+MainFrame.ADD_CARD_DESC = Ajouter une nouvelle carte
+
+MainFrame.ADD_CATEGORY = Ajouter une catgorie
+MainFrame.ADD_CATEGORY_DESC = Ajouter une nouvelle catgorie
+MainFrame.ADD_CATEGORY_INPUT = Entrer le nom de la nouvelle catgorie crer
+
+MainFrame.CATEGORY_TREE = Arbre
+MainFrame.CATEGORY_TREE_DESC = Afficher/Cacher l'arbre des catgories
+
+MainFrame.COPY = Copier
+MainFrame.CUT = Couper
+MainFrame.PASTE = Coller
+MainFrame.DELETE = Supprimer
+
+MainFrame.DELETE_CARDS_WARN = Vous tes sur le point de supprimer {0} cartes(s). Voulez-vous continuer?
+MainFrame.DELETE_CARDS_WARN_TITLE = Suppression de carte
+
+MainFrame.DELETE_CATEGORY_WARN = La suppression de la catgorie {0} supprimera {1} carte(). Voulez-vous continuer?
+
+MainFrame.EDIT_CARD = diter la carte
+MainFrame.EDIT_CARD_DESC = diter et afficher les dtails de la carte
+
+MainFrame.ERROR_TITLE = Erreur
+MainFrame.ERROR_LOAD = Une erreur est survenue lors du tlchargementdu fichier {0}.
+MainFrame.ERROR_SAVE = Une erreur est survenue lors du la sauvegarde du fichier {0}. La leon n'a pas t sauvegarde.
+
+MainFrame.EXIT = Quitter
+MainFrame.EXIT_DESC = Quitter l'application
+
+MainFrame.FILE_FILTER_DESC = Les leons de jMemorize
+
+MainFrame.FIND = Rechercher
+MainFrame.FIND_DESC = Trouver une carte
+
+MainFrame.LEARN = Aprendre
+MainFrame.LEARN_DESC = Commencer apprendre session avec toutes les cartes non apprises et expires
+
+MainFrame.MENU_FILE = Fichier
+MainFrame.MENU_EDIT = diter
+MainFrame.MENU_HELP = Aide
+MainFrame.MENU_LESSON = Leon
+
+MainFrame.NEW = Nouveau
+MainFrame.NEW_DESC = Crer une leon vide
+
+MainFrame.UNNAMED_LESSON = Nouvelle leon
+
+MainFrame.OPEN = Ouvrir
+MainFrame.OPEN_DESC = Ouvrir le fichier de la leon
+
+MainFrame.REMOVE_CATEGORY_TITLE = Suppression de la catgorie
+MainFrame.REMOVE_DESC = Supprimer les item(s) prsentement slectionns
+
+MainFrame.RESET = Rinitialiser la carte
+MainFrame.RESET_DESC = Rinitialiser les statistiques de la carte
+MainFrame.RESET_WARN = Vous tes sur le point de rinitialiser {0} card(s). Voulez-vous continuer?
+
+MainFrame.SAVE = Sauvegarder
+MainFrame.SAVE_DESC = Sauvegarder la leon
+MainFrame.SAVE_AS = Sauvegarder sous..
+MainFrame.SAVE_AS_DESC = Sauvegarder la leon sous..
+MainFrame.SAVE_MODIFIED = La leon a t modifie. Voulez-vous sauvegarder avant de quitter?
+
+MainFrame.PREFERENCES = Prfrences
+MainFrame.PREFERENCES_DESC = Choisissez vos prfrences
+
+MainFrame.EXPORT = Export en ...
+MainFrame.EXPORT_DESC = Export la lesson
+
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Export en *.pdf
+MainFrame.EXPORT_RTF_DESC = Export en *.rtf
+
+# preferences
+
+Preferences.USE_GZIP = Compresser les leons en format GZIP.
+Preferences.LANGUAGE = Langage
+Preferences.RESTART = La nouvelle langue slectionne va apparatra au prochain dmarrage de l'application.
+
+Preferences.FONT_SETTINGS = Configuration des caractres
+Preferences.FONT = Caractres
+Preferences.SIZE = Grandeur
+Preferences.PREVIEW = Aperu
+
+# card table
+
+CardTable.COLUMNS = Colonnes
+CardTable.NO_DATE_DESC = Cette carte n'a jamais t teste.
+CardTable.NOT_LEARNED = Non apprise
+CardTable.PATH = Chemin
+CardTable.SELECTED_CARDS = Cartes slectionnes
+
+# deck chart
+
+DeckChart.CARDS = Cartes
+DeckChart.START_DECK = Commencer le paquet
+DeckChart.SUMMARY = Sommaire
+DeckChart.EXPIRED_CARDS = Cartes expires
+DeckChart.LEARNED_CARDS = Cartes apprises
+DeckChart.UNLEARNED_CARDS = Cartes non apprises
+
+# deck table
+
+DeckTable.NEXT_DECK = Paquet suivant
+DeckTable.NEXT_DECK_DESC = Afficher le prochain paquet.
+DeckTable.PREV_DECK = Paquet prcdent
+DeckTable.PREV_DECK_DESC = Afficher le paquet prcdent.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Performances
+EditCard.DETAILS_HISTORY = Historique
+
+EditCard.MODIFIED_WARN = L'entre des cartes a t modifie. Voulez-vous les appliquer avant de continuer?
+EditCard.MODIFIED_WARN_TITLE = La carte a t modifie.
+
+EditCard.NEXT_CARD = Carte suivante
+EditCard.NEXT_CARD_DESC = Afficher la prochaine carte
+
+EditCard.PREV_CARD = Carte prcdente
+EditCard.PREV_CARD_DESC = Afficher la carte prcdente
+
+EditCard.REMOVE_CARD = Retirer la carte
+EditCard.REMOVE_CARD_DESC = Retirer la prsente carte
+
+EditCard.REMOVE_CARD_WARN = tes-vous certain de vouloir supprimer cette carte?
+EditCard.REMOVE_CARD_WARN_TITLE = Suppression de carte
+
+EditCard.RESET_CARD = Rinitialiser la carte
+EditCard.RESET_CARD_DESC = Rinitialiser la carte prsente
+EditCard.RESET_CARD_WARN = Rinitialiser cette carte la ramenera au premier paquet.\ntes-vous certain?
+
+EditCard.TAB_SIDES = Cts
+EditCard.TAB_PROPERTIES = Proprits
+
+# find tool
+
+FindTool.FIND = Chercher
+FindTool.BOTH_SIDES = Deux cts
+FindTool.MATCH_CASE = Cas similaire
+FindTool.RESULTS = Rsultats
+FindTool.SEARCH_TEXT = Rechercher le texte
+FindTool.SETTINGS = Configurations
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Essayer de vous rappeler cette rponse
+Learn.DID_YOU_KNOW_ANSWER = Saviez-vous la bonne rponse?
+Learn.YES = Oui
+Learn.NO = NOn
+
+Learn.CARD_COUNTER = Compteur de cartes
+Learn.FLIPPED_CARD_SIDES = Cartes inverses
+Learn.SHOW_ANSWER = Afficher la lecon
+Learn.SHOW_CATEGORY = Afficher la catgorie
+Learn.SKIP_CARD = Passer la carte suivante
+Learn.STOP = Arrter l'apprentissage
+Learn.TIMER = Compteur
+
+# learn settings
+
+LearnSettings.ADVANCED = Avanc
+LearnSettings.SCHEDULING = Cduler
+
+LearnSettings.CARDS_TO_LEARN = Cartes apprendre
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Apprendre toutes les cartes qui ne sont pas apprises et expires.
+LearnSettings.LEARN_UNLEARNED = Apprendre seulement les cartes qui ne sont pas apprises.
+LearnSettings.LEARN_EXPIRED = Apprendre seulement les cartes expires.
+
+LearnSettings.CARDS_ORDER = Ordre des cartes
+LearnSettings.SHUFFLE_CARDS = Mlanger les cartes de tous les paquets et catgories.
+LearnSettings.GROUP_CARDS = Grouper les cartes par catgorie lors de l'apprentissage.
+LearnSettings.NATURAL_CATEGORY_ORDER = Afficher catgories en ordre linaire.
+LearnSettings.RANDOM_CATEGORY_ORDER = Afficher catgories en ordre alatoire.
+
+LearnSettings.DELIMITERS = Dlimiteurs
+LearnSettings.CARD_LIMIT = Limite de la carte
+LearnSettings.CARD_LIMIT_TEXT = Fermer session lorsqu'une certaine limite de carte a t atteinte.
+LearnSettings.TIME_LIMIT = Temps limite
+LearnSettings.TIME_LIMIT_TEXT = Fermer session lorsqu'une certaine limite de temps est atteinte.
+LearnSettings.DONT_RETEST_FAILED = Ne pas rapprendre les cartes qui ont choues dans cette session.
+
+LearnSettings.SCHEDULE_PRESETS = Cduler les rgles l'avance
+LearnSettings.DELAY_AFTER_LEVEL = Dlai aprs le niveau {0}
+LearnSettings.DAYS = Jours
+LearnSettings.HOURS = Heures
+LearnSettings.MINUTES = Minutes
+
+LearnSettings.SIDE_MODE = Mode de ct
+LearnSettings.NORMAL_MODE = Apprendre en mode normal.
+LearnSettings.FLIP_MODE = Apprendre avec les cts de carte inverss.
+LearnSettings.RANDOM_MODE = Apprendre en mode alatoire avec les cts de cartes tant inverss alatoirement.
+
+LearnSettings.START = Commencer session\!
+LearnSettings.TITLE = Apprendre la configurations
+
+# new card
+
+NewCard.ADD = Ajouter
+NewCard.ADD_AND_NEXT = Ajouter et crer une nouvelle carte
+
+NewCard.EDIT_RECENTLY = diter rcemment
+NewCard.EDIT_RECENTLY_DESC = diter la carte cre rcemment
+
+NewCard.NEW_WINDOW = Nouvelle fentre
+NewCard.NEW_WINDOW_DESC = Ouvrir une autre nouvelle carte fentre ajoute
+
+NewCard.TITLE = Crer une carte
+
+NewCard.CLOSE_WARN = Avertissement
+NewCardManager.DISMISSED_WARN = Les modifications apports cette carte sont sur le point d'tre effaces.\nVoulez-vous crer la carte avant la fermeture de la fentre ?
+
+# status bar
+
+StatusBar.CARDS = Cartes
+StatusBar.EXPIRED = Expirs
+StatusBar.LEARNED = Apprises
+StatusBar.UNLEARNED = Non apprises
+
+StatusBar.LEARNING_CATEGORY = Apprendre la catgorie
+StatusBar.CARDS_LEFT = Cartes restantes
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Linaire (Dfaut)
+Strategy.CONSTANT_SCHEDULE = Constant
+Strategy.EXPONENTIAL_SCHEDULE = Exponentiel
+Strategy.QUADRATIC_SCHEDULE = Quadratique
+Strategy.CUSTOM_SCHEDULE = Personnalis
+
+# time related
+
+Time.DAYS = jours
+Time.ONE_DAY = une journe
+Time.HOURS = heures
+Time.ONE_HOUR = une heure
+Time.MINUTES = minutes
+Time.ONE_MINUTE = une minute
+Time.SECONDS = secondes
+
+Time.PASSED = pass
+
+Time.IN = en {0}
+Time.AGO = {0} avant
diff --git a/src/resource/text/translation_ja.properties b/src/resource/text/translation_ja.properties
new file mode 100644
index 0000000..af76141
--- /dev/null
+++ b/src/resource/text/translation_ja.properties
@@ -0,0 +1,326 @@
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Eberhard Herzog
+# Language: Japanese (ja)
+# jMemorize-Version: 1.2
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = \u5206\u985e
+General.CREATED = \u4f5c\u6210
+General.MODIFIED = \u5909\u66f4\u3055\u308c\u305f
+General.EXPIRES = \u671f\u9650
+General.LAST_TEST = \u6700\u8fd1\u306e\u30c6\u30b9\u30c8
+General.DECK = \u30ab\u30fc\u30c9\u675f
+General.DECKS = \u30ab\u30fc\u30c9\u675f
+General.FRONTSIDE = \u8868\u9762
+General.FLIPSIDE = \u88cf\u9762
+General.OKAY = Okay
+General.APPLY = \u78ba\u5b9a
+General.CANCEL = \u30ad\u30e3\u30f3\u30bb\u30eb
+General.ROOT_CATEGORY = \u5168\u3066
+General.GENERAL = \u4e00\u822c
+General.PASSED = \u5f53\u305f\u308a
+
+General.EMPTY_SIDES_ALERT = \u30ab\u30fc\u30c9\u306b\u306f\u3001\u7a7a\u306e\u9762\u304c\u8a31\u3055\u308c\u3066\u3044\u306a\u3044
+General.EMPTY_SIDES_ALERT_TITLE = \u30ab\u30fc\u30c9\u9762\u306f\u7a7a\u3067\u3059
+
+# main frame
+
+MainFrame.ABOUT = \u30d0\u30fc\u30b8\u30e7\u30f3
+MainFrame.ABOUT_DESC = \u3053\u306e\u30bd\u30d5\u30c8\u306b\u3064\u3044\u3066
+
+MainFrame.ADD_CARD = \u65b0\u30ab\u30fc\u30c9
+MainFrame.ADD_CARD_DESC = \u65b0\u30ab\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b
+
+MainFrame.ADD_CATEGORY = \u65b0\u898f\u5206\u985e
+MainFrame.ADD_CATEGORY_DESC = \u65b0\u3057\u3044\u5206\u985e\u3092\u8ffd\u52a0\u3059\u308b
+MainFrame.ADD_CATEGORY_INPUT = \u65b0\u3057\u3044\u5206\u985e\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+
+MainFrame.CATEGORY_TREE = \u5206\u985e\u30c4\u30ea\u30fc
+MainFrame.CATEGORY_TREE_DESC = \u5206\u985e\u30c4\u30ea\u30fc\u8868\u793a\u30fb\u975e\u8868\u793a
+
+MainFrame.COPY = \u30b3\u30d4\u30fc
+MainFrame.CUT = \u5207\u308a\u53d6\u308a
+MainFrame.PASTE = \u8cbc\u308a\u4ed8\u3051
+MainFrame.DELETE = \u524a\u9664
+
+MainFrame.DELETE_CARDS_WARN = {0} \u30ab\u30fc\u30c9\u3092\u524a\u9664\u3057\u307e\u3057\u305f\u3002\u7d9a\u3051\u307e\u3059\u304b\u3002
+MainFrame.DELETE_CARDS_WARN_TITLE = \u30ab\u30fc\u30c9\u306e\u524a\u9664
+MainFrame.DELETE_CATEGORY_WARN = \u5206\u985e {0} \u306e\u524a\u9664\u306b\u3088\u3063\u3066 {1} \u30ab\u30fc\u30c9\u304c\u524a\u9664\u3055\u308c\u308b\u3002\u7d9a\u3051\u307e\u3059\u304b\u3002
+
+MainFrame.EDIT_CARD = \u30ab\u30fc\u30c9\u3092\u7de8\u96c6\u3059\u308b
+MainFrame.EDIT_CARD_DESC = \u30ab\u30fc\u30c9\u306e\u8a73\u7d30\u3092\u898b\u3066\u3001\u7de8\u96c6\u3059\u308b
+
+MainFrame.ERROR_TITLE = \u30a8\u30e9\u30fc
+MainFrame.ERROR_LOAD = {0} \u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u8d77\u304d\u307e\u3057\u305f
+MainFrame.ERROR_SAVE = {0} \u306e\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u8d77\u304d\u307e\u3057\u305f\u3002\n \u30d5\u30a1\u30a4\u30eb\u306f\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+
+MainFrame.EXIT = \u7d42\u4e86
+MainFrame.EXIT_DESC = \u30bd\u30d5\u30c8\u3092\u7d42\u4e86\u3055\u305b\u308b
+
+MainFrame.FILE_FILTER_DESC = jMemorize\u306e\u30ec\u30c3\u30b9\u30f3
+MainFrame.PDF_FILE_FILTER_DESC = PDF\u5f62\u5f0f - Portable Document Format (.pdf)
+
+MainFrame.FIND = \u691c\u7d22
+MainFrame.FIND_DESC = \u30ab\u30fc\u30c9\u3092\u63a2\u3059
+
+MainFrame.LEARN = \u5b66\u7fd2
+MainFrame.LEARN_DESC = \u5b66\u7fd2\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u306f\u3058\u3081\u308b
+
+MainFrame.MENU_FILE = \u30d5\u30a1\u30a4\u30eb
+MainFrame.MENU_EDIT = \u7de8\u96c6
+MainFrame.MENU_HELP = \u30d8\u30eb\u30d7
+MainFrame.MENU_LESSON = \u30ec\u30c3\u30b9\u30f3
+
+MainFrame.NEW = \u65b0\u898f
+MainFrame.NEW_DESC = \u65b0\u3057\u3044\u30ec\u30c3\u30b9\u30f3\u3092\u4f5c\u6210\u3059\u308b
+
+MainFrame.UNNAMED_LESSON = \u65b0\u30ec\u30c3\u30b9\u30f3
+
+MainFrame.OPEN = \u958b\u304f
+MainFrame.OPEN_DESC = \u30ec\u30c3\u30b9\u30f3\u3092\u958b\u304f
+
+MainFrame.REMOVE_CATEGORY_TITLE = \u5206\u985e\u3092\u524a\u9664\u3059\u308b
+MainFrame.REMOVE_DESC = \u9078\u629e\u3055\u308c\u305f\u9805\u76ee\u3092\u524a\u9664\u3059\u308b
+
+MainFrame.RESET = \u30ab\u30fc\u30c9\u3092\u5143\u306b\u623b\u3059
+MainFrame.RESET_DESC = \u5168\u3066\u306e\u30ab\u30fc\u30c9\u7d71\u8a08\u3092\u524a\u9664\u3059\u308b
+MainFrame.RESET_WARN = {0} \u30ab\u30fc\u30c9\u304c\u5143\u306b\u623b\u3055\u308c\u307e\u3057\u305f\u3002\u7d9a\u3051\u307e\u3059\u304b\u3002
+
+MainFrame.SAVE = \u4fdd\u5b58
+MainFrame.SAVE_DESC = \u30ec\u30c3\u30b9\u30f3\u3092\u4fdd\u5b58\u3059\u308b
+MainFrame.SAVE_AS = \u540d\u524d\u3092\u3064\u3051\u3066\u4fdd\u5b58\u3059\u308b
+MainFrame.SAVE_AS_DESC = \u30ec\u30c3\u30b9\u30f3\u306b\u540d\u524d\u3092\u3064\u3051\u3066\u4fdd\u5b58\u3059\u308b
+MainFrame.SAVE_MODIFIED = \u30ec\u30c3\u30b9\u30f3\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002\u7d42\u4e86\u3059\u308b\u524d\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u307e\u3059\u304b\u3002
+
+MainFrame.IMPORT = \u30a4\u30f3\u30dd\u30fc\u30c8
+
+MainFrame.EXPORT = \u30a8\u30ad\u30b9\u30dd\u30fc\u30c8
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = pdf\u5f62\u5f0f\u3078\u30a8\u30ad\u30b9\u30dd\u30fc\u30c8\u3059\u308b
+MainFrame.EXPORT_RTF_DESC = rtf\u5f62\u5f0f\u3078\u30a8\u30ad\u30b9\u30dd\u30fc\u30c8\u3059\u308b
+MainFrame.EXPORT_CLEAN = \u500b\u4eba\u5b66\u7fd2\u30c7\u30fc\u30bf\u306a\u3057\u306e\u30ec\u30c3\u30b9\u30f3
+
+MainFrame.PREFERENCES = \u8a2d\u5b9a
+MainFrame.PREFERENCES_DESC = \u8a2d\u5b9a\u3092\u3057\u3066\u304f\u3060\u3055\u3044
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = \u30d5\u30a1\u30a4\u30eb\u306e\u4e0a\u66f8\u304d
+MainFrame.CONFIRM_OVERWRITE = \u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\u3002
+
+MainFrame.SELECT_CHARACTER_SET = \u30d5\u30a1\u30a4\u30eb\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u9078\u3093\u3067\u304f\u3060\u3055\u3044
+MainFrame.CHARACTER_SET = \u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0
+
+# files
+
+File.CSV = Comma Separated Values (*.csv)
+File.TSV = Tabular Separated Values (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = \u30db\u30fc\u30e0\u30da\u30fc\u30b8
+URL.MANUAL = \u8aac\u660e\u66f8
+URL.FEATURE_TRACKER = Feature tracker
+URL.BUG_TRACKER = Bug tracker
+
+# preferences
+
+Preferences.USE_GZIP = \u30ec\u30c3\u30b9\u30f3\u3092 GZIP \u3067\u5727\u7e2e\u3059\u308b
+Preferences.LANGUAGE = \u8a00\u8a9e
+Preferences.RESTART = \u6b21\u56de\u3001\u7acb\u3061\u4e0a\u3052\u308b\u3068\u304d\u306b\u3001\u8a00\u8a9e\u5909\u66f4\u304c\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002
+
+Preferences.FONT_SETTINGS = \u30d5\u30a9\u30f3\u30c8\u306e\u8a2d\u5b9a
+Preferences.FONT = \u30d5\u30a9\u30f3\u30c8
+Preferences.SIZE = \u30b5\u30a4\u30ba
+Preferences.PREVIEW = \u30d7\u30ec\u30d3\u30e5\u30fc
+
+# card table
+
+CardTable.COLUMNS = \u5217
+CardTable.NO_DATE_DESC = \u3053\u306e\u30ab\u30fc\u30c9\u306f\u5b66\u7fd2\u3055\u308c\u3066\u3044\u307e\u305b\u3093
+CardTable.NOT_LEARNED = \u672a\u5b66\u7fd2
+CardTable.PATH = \u30d1\u30b9
+CardTable.SELECTED_CARDS = \u9078\u629e\u3055\u308c\u305f\u30ab\u30fc\u30c9
+
+# deck chart
+
+DeckChart.CARDS = \u30ab\u30fc\u30c9
+DeckChart.START_DECK = \u6700\u521d\u306e\u675f
+DeckChart.SUMMARY = \u5168\u3066
+DeckChart.EXPIRED_CARDS = \u671f\u9650\u304c\u5207\u308c\u305f\u30ab\u30fc\u30c9
+DeckChart.LEARNED_CARDS = \u5b66\u7fd2\u3057\u305f\u30ab\u30fc\u30c9
+DeckChart.UNLEARNED_CARDS = \u672a\u5b66\u7fd2\u30ab\u30fc\u30c9
+
+Summary.LEARNED = \u5b66\u7fd2\u3057\u305f
+Summary.FAILED = \u9593\u9055\u3044
+Summary.RELEARNED = \u5fa9\u7fd2\u3057\u305f
+Summary.SKIPPED = \u98db\u3070\u3057\u305f
+
+# deck table
+
+DeckTable.NEXT_DECK = \u6b21\u306e\u675f
+DeckTable.NEXT_DECK_DESC = \u6b21\u306e\u675f\u3092\u8868\u793a\u3057\u307e\u3059
+DeckTable.PREV_DECK = \u524d\u306e\u675f
+DeckTable.PREV_DECK_DESC = \u524d\u306e\u675f\u3092\u8868\u793a\u3057\u307e\u3059
+
+# card editting
+
+EditCard.DETAILS_RATIO = \u6b63\u89e3\u7387
+EditCard.DETAILS_HISTORY = \u5b66\u7fd2\u66a6
+
+EditCard.MODIFIED_WARN = \u30ab\u30fc\u30c9\u304c\u7de8\u96c6\u3055\u308c\u307e\u3057\u305f\u3002\u7d9a\u3051\u308b\u524d\u306b\u5909\u66f4\u3092\u78ba\u5b9a\u3057\u307e\u3059\u304b\u3002
+EditCard.MODIFIED_WARN_TITLE = \u30ab\u30fc\u30c9\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f
+
+EditCard.NEXT_CARD = \u6b21\u306e\u30ab\u30fc\u30c9
+EditCard.NEXT_CARD_DESC = \u6b21\u306e\u30ab\u30fc\u30c9\u3092\u8868\u793a\u3057\u307e\u3059
+
+EditCard.PREV_CARD = \u524d\u306e\u30ab\u30fc\u30c9
+EditCard.PREV_CARD_DESC = \u524d\u306e\u30ab\u30fc\u30c9\u3092\u8868\u793a\u3057\u307e\u3059
+
+EditCard.REMOVE_CARD = \u30ab\u30fc\u30c9\u306e\u524a\u9664
+EditCard.REMOVE_CARD_DESC = \u3053\u306e\u30ab\u30fc\u30c9\u3092\u524a\u9664\u3057\u307e\u3059
+
+EditCard.REMOVE_CARD_WARN = \u3053\u306e\u30ab\u30fc\u30c9\u3092\u672c\u5f53\u306b\u524a\u9664\u3057\u307e\u3059\u304b\u3002
+EditCard.REMOVE_CARD_WARN_TITLE = \u30ab\u30fc\u30c9\u306e\u524a\u9664
+
+EditCard.RESET_CARD = \u30ab\u30fc\u30c9\u3092\u5143\u306b\u623b\u3059
+EditCard.RESET_CARD_DESC = \u3053\u306e\u30ab\u30fc\u30c9\u3092\u6700\u521d\u306e\u675f\u306b\u623b\u3059
+EditCard.RESET_CARD_WARN = \u3053\u306e\u30ab\u30fc\u30c9\u306f\u6700\u521d\u306e\u675f\u306b\u623b\u3055\u308c\u307e\u3059\u3002\n\u826f\u3044\u3067\u3059\u304b\u3002
+
+EditCard.TAB_SIDES = \u30ab\u30fc\u30c9\u306e\u9762
+EditCard.TAB_PROPERTIES = \u30d7\u30ed\u30d1\u30c6\u30a3\u30fc
+
+# find tool
+
+FindTool.FIND = \u691c\u7d22
+FindTool.BOTH_SIDES = \u4e21\u9762
+FindTool.MATCH_CASE = \u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b
+FindTool.RESULTS = \u7d50\u679c
+FindTool.SEARCH_TEXT = \u691c\u7d22\u6587\u5b57\u5217
+FindTool.SETTINGS = \u8a2d\u5b9a
+
+# learn
+
+Learn.REMEMBER_THE_ANSWER = \u7b54\u3048\u3092\u601d\u3044\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+Learn.DID_YOU_KNOW_ANSWER = \u6b63\u89e3\u3067\u3057\u305f\u304b\u3002
+Learn.YES = \u306f\u3044
+Learn.NO = \u3044\u3044\u3048
+
+Learn.CARD_COUNTER = \u30ab\u30fc\u30c9\u6570
+Learn.FLIPPED_CARD_SIDES = \u30ab\u30fc\u30c9\u9762\u3092\u5165\u308c\u66ff\u3048\u308b
+Learn.SHOW_ANSWER = \u7b54\u3048\u3092\u8868\u793a\u3059\u308b
+Learn.SHOW_CATEGORY = \u5206\u985e\u3092\u8868\u793a\u3059\u308b
+Learn.SKIP_CARD = \u98db\u3070\u3059
+Learn.STOP = \u5b66\u7fd2\u3092\u4e2d\u6b62\u3059\u308b
+Learn.TIMER = \u30b9\u30c8\u30c3\u30d7\u30a6\u30aa\u30c3\u30c1
+
+Learn.SESSION_RESULTS = \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u7d50\u679c
+Learn.CARD_PROGRESS = \u30ab\u30fc\u30c9\u306e\u9032\u307f\u5177\u5408
+Learn.SESSION_PROGRESS = \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u9032\u307f\u5177\u5408
+
+# learn settings
+
+LearnSettings.ADVANCED = \u30a2\u30c9\u30d0\u30f3\u30b9\u30c9
+LearnSettings.SCHEDULING = \u30b9\u30b1\u30b8\u30e5\u30fc\u30eb
+
+LearnSettings.CARDS_TO_LEARN = \u5b66\u7fd2\u3059\u3079\u304d\u30ab\u30fc\u30c9
+LearnSettings.LEARN_UNLEARNED_EXPIRED = \u5168\u3066\u306e\u672a\u5b66\u7fd2\u30ab\u30fc\u30c9\u3068\u671f\u9650\u5207\u308c\u306e\u30ab\u30fc\u30c9\u3092\u5b66\u7fd2\u3059\u308b
+LearnSettings.LEARN_UNLEARNED = \u672a\u5b66\u7fd2\u30ab\u30fc\u30c9\u306e\u307f\u5b66\u7fd2\u3059\u308b
+LearnSettings.LEARN_EXPIRED = \u671f\u9650\u5207\u308c\u306e\u30ab\u30fc\u30c9\u306e\u307f\u5b66\u7fd2\u3059\u308b
+
+LearnSettings.CARDS_ORDER = \u30ab\u30fc\u30c9\u9806
+LearnSettings.SHUFFLE_CARDS = \u5168\u3066\u306e\u675f\u3068\u5206\u985e\u306e\u30ab\u30fc\u30c9\u3092\u30b7\u30e3\u30c3\u30d5\u30eb\u3059\u308b
+LearnSettings.GROUP_CARDS = \u30ab\u30fc\u30c9\u3092\u5206\u985e\u3067\u5206\u3051\u308b
+LearnSettings.NATURAL_CATEGORY_ORDER = \u5206\u985e\u3092\u81ea\u7136\u306e\u9806\u756a\u3067\u5b66\u7fd2\u3059\u308b
+LearnSettings.RANDOM_CATEGORY_ORDER = \u5206\u985e\u3092\u30e9\u30f3\u30c0\u30e0\u3067\u5b66\u7fd2\u3059\u308b
+
+LearnSettings.DELIMITERS = \u5236\u9650
+LearnSettings.CARD_LIMIT = \u30ab\u30fc\u30c9\u6570\u306e\u5236\u9650
+LearnSettings.CARD_LIMIT_TEXT = \u4e00\u5b9a\u306e\u30ab\u30fc\u30c9\u6570\u306b\u9054\u3057\u305f\u3089\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3055\u305b\u308b
+LearnSettings.TIME_LIMIT = \u2026\u5206\u306e\u6642\u9593\u5236\u9650
+LearnSettings.TIME_LIMIT_TEXT = \u4e00\u5b9a\u306e\u6642\u9593\u304c\u305f\u3066\u3070\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3055\u305b\u308b
+LearnSettings.DONT_RETEST_FAILED = \u9593\u9055\u3048\u305f\u30ab\u30fc\u30c9\u3092\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u4e2d\u306b\u306f\u5fa9\u7fd2\u3057\u306a\u3044
+
+LearnSettings.SCHEDULE_PRESETS = \u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306e\u8a2d\u5b9a
+LearnSettings.DELAY_AFTER_LEVEL = \u6b21\u306e\u5fa9\u7fd2\u307e\u3067...\u30ec\u30d9\u30eb {0}
+LearnSettings.DAYS = \u65e5
+LearnSettings.HOURS = \u6642\u9593
+LearnSettings.MINUTES = \u5206
+
+LearnSettings.SIDE_MODE = \u9762\u3092\u9078\u3076
+LearnSettings.NORMAL_MODE = \u666e\u901a\u306e\u9762\u3067\u5b66\u7fd2\u3059\u308b
+LearnSettings.FLIP_MODE = \u9762\u3092\u5165\u308c\u66ff\u3048\u3066\u5b66\u7fd2\u3059\u308b
+LearnSettings.RANDOM_MODE = \u9762\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u5165\u308c\u66ff\u3048\u3066\u5b66\u7fd2\u3059\u308b
+LearnSettings.BOTH_MODE = \u4e21\u9762\u3092\u3001\u6307\u5b9a\u3055\u308c\u305f\u56de\u6570\u5b66\u7fd2\u3059\u308b
+
+LearnSettings.START = \u30bb\u30c3\u30b7\u30e7\u30f3\u30b9\u30bf\u30fc\u30c8
+LearnSettings.TITLE = \u5b66\u7fd2\u306e\u8a2d\u5b9a
+
+# new card
+
+NewCard.ADD = \u4f5c\u6210
+NewCard.ADD_AND_NEXT = \u4f5c\u6210\u3068\u6b21\u3078\u79fb\u52d5
+
+NewCard.EDIT_RECENTLY = \u6700\u8fd1\u306e\u3092\u7de8\u96c6\u3059\u308b
+NewCard.EDIT_RECENTLY_DESC = \u6700\u8fd1\u4f5c\u6210\u3057\u305f\u30ab\u30fc\u30c9\u3092\u7de8\u96c6\u3059\u308b
+
+NewCard.NEW_WINDOW = \u65b0\u3057\u3044\u30a6\u30a4\u30f3\u30c9\u30a6
+NewCard.NEW_WINDOW_DESC = \u65b0\u3057\u3044\u30ab\u30fc\u30c9\u4f5c\u6210\u30a6\u30a4\u30f3\u30c9\u30a6\u3092\u958b\u304f
+
+NewCard.TITLE = \u65b0\u3057\u3044\u30ab\u30fc\u30c9
+
+NewCard.CLOSE_WARN = \u8b66\u544a
+NewCardManager.DISMISSED_WARN = \u30ab\u30fc\u30c9\u306f\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\n\u30a6\u30a4\u30f3\u30c9\u30a6\u3092\u9589\u3058\u308b\u524d\u306b\u4f5c\u6210\u3057\u307e\u3059\u304b\u3002
+
+# status bar
+
+StatusBar.CARDS = \u30ab\u30fc\u30c9
+StatusBar.EXPIRED = \u671f\u9650\u5207\u308c
+StatusBar.LEARNED = \u5b66\u7fd2\u3057\u305f
+StatusBar.UNLEARNED = \u672a\u5b66\u7fd2
+StatusBar.PARTIAL = \u4e00\u90e8\u5b66\u7fd2
+
+StatusBar.LEARNING_CATEGORY = \u5206\u985e\u3092\u5b66\u7fd2\u3059\u308b
+StatusBar.CARDS_LEFT = \u6b8b\u308a\u306e\u30ab\u30fc\u30c9
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = \u76f4\u7dda\u7684\uff08\u6a19\u6e96\uff09
+Strategy.CONSTANT_SCHEDULE = \u4e0d\u5909\u7684
+Strategy.EXPONENTIAL_SCHEDULE = \u6307\u6570\u7684
+Strategy.QUADRATIC_SCHEDULE = \u4e8c\u6b21\u95a2\u6570\u7684
+Strategy.CRAM_SCHEDULE = \u30b9\u30d1\u30eb\u30bf
+Strategy.CUSTOM_SCHEDULE = \u81ea\u5206\u306e\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb
+
+# time
+
+Time.DAYS = \u65e5
+Time.ONE_DAY = \u4e00\u65e5
+Time.HOURS = \u6642\u9593
+Time.ONE_HOUR = \u4e00\u6642\u9593
+Time.MINUTES = \u5206
+Time.ONE_MINUTE = \u4e00\u5206\u9593
+Time.SECONDS = \u79d2
+
+Time.PASSED = \u7d4c\u3063\u305f
+
+Time.IN = {0} \u5f8c
+Time.AGO = {0} \u524d
+
+# learn history
+
+History.RECENT = \u6700\u8fd1\u306e\u30bb\u30c3\u30b7\u30e7\u30f3
+History.BY_DATE = \u30bb\u30c3\u30b7\u30e7\u30f3\uff08\u65e5\u306b\u3061\uff09
+History.BY_WEEK = \u30bb\u30c3\u30b7\u30e7\u30f3\uff08\u9031\uff09
+History.BY_MONTH = \u30bb\u30c3\u30b7\u30e7\u30f3\uff08\u6708\uff09
+History.BY_YEAR = \u30bb\u30c3\u30b7\u30e7\u30f3\uff08\u5e74\uff09
+History.SESSION_DURATION = \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u9577\u3055
+
+
diff --git a/src/resource/text/translation_nl.native b/src/resource/text/translation_nl.native
new file mode 100644
index 0000000..d625ab5
--- /dev/null
+++ b/src/resource/text/translation_nl.native
@@ -0,0 +1,333 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Filip Tack
+# Sander van Rijnswou
+# Language: Dutch (nl)
+# jMemorize-Version: 1.2.3
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Categorie
+General.CREATED = Gemaakt
+General.MODIFIED = Gewijzigd
+General.EXPIRES = Vervalt
+General.LAST_TEST = Laatste Test
+General.DECK = Stapel
+General.DECKS = Stapels
+General.FRONTSIDE = Voorkant
+General.FLIPSIDE = Achterkant
+General.OKAY = OK
+General.APPLY = Toepassen
+General.CANCEL = Annuleren
+General.ROOT_CATEGORY = Alle
+General.GENERAL = Algemeen
+General.PASSED = Geleerd
+General.UNLEARNED = Niet geleerd
+General.EXPIRED = Vervallen
+
+General.EMPTY_SIDES_ALERT = Je moet beide kaartzijden invullen
+General.EMPTY_SIDES_ALERT_TITLE = Slechte kaartzijden
+
+# main frame
+
+MainFrame.ABOUT = Over
+MainFrame.ABOUT_DESC = Over deze toepassing
+
+MainFrame.ADD_CARD = Voeg kaart toe
+MainFrame.ADD_CARD_DESC = Voeg een nieuwe kaart toe
+
+MainFrame.ADD_CATEGORY = Voeg categorie toe
+MainFrame.ADD_CATEGORY_DESC = Voeg een nieuwe categorie toe
+MainFrame.ADD_CATEGORY_INPUT = Geef de naam van de nieuwe categorie die je wilt maken.
+
+MainFrame.CATEGORY_TREE = Categorienlijst
+MainFrame.CATEGORY_TREE_DESC = Toon/verberg de categorienlijst
+
+MainFrame.COPY = Kopieer
+MainFrame.CUT = Knip
+MainFrame.PASTE = Plak
+MainFrame.DELETE = Wis
+
+MainFrame.DELETE_CARDS_WARN = Je staat op het punt {0} kaart(en) te wissen! Wil je hiermee echt doorgaan?
+MainFrame.DELETE_CARDS_WARN_TITLE = Wissen van kaart
+
+MainFrame.DELETE_CATEGORY_WARN = Door categorie {0} te wissen zal je {1} kaarten wissen. Wil je hiermee echt doorgaan?
+
+MainFrame.EDIT_CARD = Wijzig kaart
+MainFrame.EDIT_CARD_DESC = Bekijk en wijzig de kaart
+
+MainFrame.ERROR_TITLE = Fout
+MainFrame.ERROR_LOAD = Er was een fout bij het laden van bestand {0}.
+MainFrame.ERROR_SAVE = Er was een fout bij het bewaren van bestand {0}. De les werd niet bewaard.
+
+MainFrame.EXIT = Einde
+MainFrame.EXIT_DESC = Verlaat deze toepassing.
+
+MainFrame.FILE_FILTER_DESC = jMemorize Lessen
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = Zoek
+MainFrame.FIND_DESC = Zoek kaarten
+
+MainFrame.LEARN = Leer
+MainFrame.LEARN_DESC = Leer een sessie met alle niet geleerde en vervallen kaarten
+
+MainFrame.MENU_FILE = Bestand
+MainFrame.MENU_EDIT = Wijzig
+MainFrame.MENU_HELP = Help
+MainFrame.MENU_LESSON = Les
+
+MainFrame.NEW = Nieuw
+MainFrame.NEW_DESC = Maak een nieuwe les
+
+MainFrame.UNNAMED_LESSON = Nieuwe les
+
+MainFrame.OPEN = Open
+MainFrame.OPEN_DESC = Open lesbestand
+
+MainFrame.REMOVE_CATEGORY_TITLE = Wissen van categorie
+MainFrame.REMOVE_DESC = Wis de geselecteerde categorien
+
+MainFrame.RESET = Reset kaart
+MainFrame.RESET_DESC = Zet de statistieken van de geselecteerde kaarten terug op 0
+MainFrame.RESET_WARN = Je staat op het punt {0} kaart(en) te resetten. Wil je hiermee echt doorgaan?
+
+MainFrame.SAVE = Bewaar
+MainFrame.SAVE_DESC = Bewaar les
+MainFrame.SAVE_AS = Bewaar als..
+MainFrame.SAVE_AS_DESC = Bewaar les als..
+MainFrame.SAVE_MODIFIED = Deze les werd gewijzigd. Wil je ze bewaren voor je dit programma verlaat?
+
+MainFrame.IMPORT = Invoeren
+
+MainFrame.EXPORT = Uitvoeren
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Uitvoeren als *.pdf
+MainFrame.EXPORT_RTF_DESC = Uitvoeren als *.rtf
+MainFrame.EXPORT_CLEAN = Les zonder persoonlijke data
+
+MainFrame.PREFERENCES = Voorkeuren
+MainFrame.PREFERENCES_DESC = Stel je voorkeuren in
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = Bestand overschrijven?
+MainFrame.CONFIRM_OVERWRITE = Bestand bestaat al. Wil je het overschrijven?
+
+MainFrame.SELECT_CHARACTER_SET = Kies de tekenset codering van het bestand
+MainFrame.CHARACTER_SET = Tekenset
+
+# files
+
+File.CSV = Comma Separated Values (*.csv)
+File.TSV = Tabular Separated Values (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = Homepage
+URL.MANUAL = Gebruikershandleiding
+URL.FEATURE_TRACKER = Feature tracker
+URL.BUG_TRACKER = Bug tracker
+
+# preferences
+
+Preferences.USE_GZIP = Comprimeer lessen in GZIP formaat.
+Preferences.LANGUAGE = Taal
+Preferences.RESTART = Je nieuwe taalselectie zal actief zijn volgende keer wanneer je dit programma opstart.
+
+Preferences.FONT_SETTINGS = Instellingen lettertype
+Preferences.FONT = Lettertype
+Preferences.SIZE = Grootte
+Preferences.PREVIEW = Voorbeeld
+
+# card table
+
+CardTable.COLUMNS = Kolommen
+CardTable.NO_DATE_DESC = Deze kaart werd nooit getest.
+CardTable.NOT_LEARNED = niet geleerd
+CardTable.PATH = Pad
+CardTable.SELECTED_CARDS = Geselecteerde kaarten
+
+# deck chart
+
+DeckChart.CARDS = Kaarten
+DeckChart.START_DECK = Start Stapel
+DeckChart.SUMMARY = Samenvatting
+DeckChart.EXPIRED_CARDS = Vervallen Kaarten
+DeckChart.LEARNED_CARDS = Geleerde Kaarten
+DeckChart.UNLEARNED_CARDS = Niet geleerde Kaarten
+
+Summary.LEARNED = Geleerd
+Summary.FAILED = Fout
+Summary.RELEARNED = Opnieuw geleerd
+Summary.SKIPPED = Overgeslagen
+
+# deck table
+
+DeckTable.NEXT_DECK = Volgende stapel
+DeckTable.NEXT_DECK_DESC = Toon volgende stapel.
+DeckTable.PREV_DECK = Vorige stapel
+DeckTable.PREV_DECK_DESC = Toon vorige stapel.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Aandeel correct
+EditCard.DETAILS_HISTORY = Leergeschiedenis
+
+EditCard.MODIFIED_WARN = De kaart werd gewijzigd. Wil je de wijziging toepassen voor je verder gaat?
+EditCard.MODIFIED_WARN_TITLE = De kaart werd gewijzigd.
+
+EditCard.NEXT_CARD = Volgende kaart
+EditCard.NEXT_CARD_DESC = Toon volgende kaart
+
+EditCard.PREV_CARD = Vorige kaart
+EditCard.PREV_CARD_DESC = Toon vorige kaart
+
+EditCard.REMOVE_CARD = Verwijder kaart
+EditCard.REMOVE_CARD_DESC = Verwijder de geselecteerde kaart
+
+EditCard.REMOVE_CARD_WARN = Ben je zeker dat je deze kaart wil verwijderen?
+EditCard.REMOVE_CARD_WARN_TITLE = Verwijderen kaart
+
+EditCard.RESET_CARD = Reset kaart
+EditCard.RESET_CARD_DESC = Reset de geselecteerde kaart
+EditCard.RESET_CARD_WARN = Door deze kaart te resetten komt ze terug op de eerste stapel.\nBen je zeker?
+
+EditCard.TAB_SIDES = Zijden
+EditCard.TAB_PROPERTIES = Eigenschappen
+
+# find tool
+
+FindTool.FIND = Zoek
+FindTool.BOTH_SIDES = Beide zijden
+FindTool.MATCH_CASE = Zelfde hoofdletter/kleine letter
+FindTool.RESULTS = Resultaten
+FindTool.SEARCH_TEXT = Zoek tekst
+FindTool.SETTINGS = Instellingen
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Probeer het antwoord te onthouden
+Learn.DID_YOU_KNOW_ANSWER = Wist je het juiste antwoord?
+Learn.YES = Ja
+Learn.NO = Neen
+
+Learn.CARD_COUNTER = Kaartteller
+Learn.FLIPPED_CARD_SIDES = Omgedraaide kaarten
+Learn.SHOW_ANSWER = Toon antwoord
+Learn.SHOW_CATEGORY = Toon categorie
+Learn.SKIP_CARD = Sla kaart over
+Learn.STOP = Stop met leren
+Learn.TIMER = Timer
+
+Learn.SESSION_RESULTS = Sessie resultaten
+Learn.CARD_PROGRESS = Kaarten voortgang
+Learn.SESSION_PROGRESS = Sessie voortgang
+
+# learn settings
+
+LearnSettings.ADVANCED = Geavanceerd
+LearnSettings.SCHEDULING = Tijdschema
+
+LearnSettings.CARDS_TO_LEARN = Te leren kaarten
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Leer alle nog niet geleerde en vervallen kaarten.
+LearnSettings.LEARN_UNLEARNED = Leer enkel nog niet geleerde kaarten.
+LearnSettings.LEARN_EXPIRED = Leer alleen vervallen kaarten.
+
+LearnSettings.CARDS_ORDER = Volgorde van de kaarten
+LearnSettings.SHUFFLE_CARDS = Meng kaarten uit alle stapels en alle categorien.
+LearnSettings.GROUP_CARDS = Groepeer kaarten per categorie tijdens het leren.
+LearnSettings.NATURAL_CATEGORY_ORDER = Toon categorien in vaste natuurlijke volgorde.
+LearnSettings.RANDOM_CATEGORY_ORDER = Toon categorien in willekeurige volgorde.
+
+LearnSettings.DELIMITERS = Begrenzingen
+LearnSettings.CARD_LIMIT = Limiet in aantal kaarten
+LearnSettings.CARD_LIMIT_TEXT = Beindig de sessie na een zekere aantal kaarten.
+LearnSettings.TIME_LIMIT = Tijdslimiet (minuten)
+LearnSettings.TIME_LIMIT_TEXT = Beindig de sessie na een zekere tijd.
+LearnSettings.DONT_RETEST_FAILED = Test kaarten die fout werden beantwoord niet opnieuw gedurende deze sessie.
+
+LearnSettings.SCHEDULE_PRESETS = Tijdschema Voor-instellingen
+LearnSettings.DELAY_AFTER_LEVEL = Tijd na niveau {0}
+LearnSettings.DAYS = Dagen
+LearnSettings.HOURS = Uren
+LearnSettings.MINUTES = Minuten
+
+LearnSettings.SIDE_MODE = Kant van de kaart
+LearnSettings.NORMAL_MODE = Leer in normale modus.
+LearnSettings.FLIP_MODE = Leer met achterkant van de kaart.
+LearnSettings.RANDOM_MODE = Leer met kaarten willekeurig op de voorkant of op de achterkant.
+LearnSettings.BOTH_MODE = Leer elke kaart zo vaak als aangegeven.
+
+
+LearnSettings.START = Start Sessie\!
+LearnSettings.TITLE = Leerinstellingen
+
+# new card
+
+NewCard.ADD = Toevoegen
+NewCard.ADD_AND_NEXT = Voeg toe en maak de volgende
+
+NewCard.EDIT_RECENTLY = Wijzig recent
+NewCard.EDIT_RECENTLY_DESC = Wijzig recent gemaakte kaart
+
+NewCard.NEW_WINDOW = Nieuw venster
+NewCard.NEW_WINDOW_DESC = Open een nieuw maak kaart venster
+
+NewCard.TITLE = Maak kaart
+
+NewCard.CLOSE_WARN = Waarschuwing
+NewCardManager.DISMISSED_WARN = Je staat op het punt de gegevens van de kaart weg te gooien.\nWil je de kaart aanmaken voor het venster gesloten wordt?
+
+# status bar
+
+StatusBar.CARDS = Kaarten
+StatusBar.EXPIRED = Vervallen
+StatusBar.LEARNED = Geleerd
+StatusBar.UNLEARNED = Niet geleerd
+StatusBar.PARTIAL = Gedeeltelijk geleerd
+
+StatusBar.LEARNING_CATEGORY = Leercategorie
+StatusBar.CARDS_LEFT = Overblijvende kaarten
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Lineair (Standaard)
+Strategy.CONSTANT_SCHEDULE = Constant
+Strategy.EXPONENTIAL_SCHEDULE = Exponentieel
+Strategy.QUADRATIC_SCHEDULE = Kwadratisch
+Strategy.CRAM_SCHEDULE = Stampen
+Strategy.CUSTOM_SCHEDULE = Aangepast
+
+# time related
+
+Time.DAYS = dagen
+Time.ONE_DAY = n dag
+Time.HOURS = uren
+Time.ONE_HOUR = n uur
+Time.MINUTES = minuten
+Time.ONE_MINUTE = n minuut
+Time.SECONDS = seconden
+
+Time.PASSED = voorbij
+
+Time.IN = binnen {0}
+Time.AGO = {0} geleden
+
+# learn history
+
+History.TITLE = Geschiedenis
+History.ACTION = Toon geschiedenis
+History.RECENT = Recente Sessies
+History.BY_DATE = Sessies per datum
+History.BY_WEEK = Sessies per week
+History.BY_MONTH = Sessies per maand
+History.BY_YEAR = Sessies per jaar
+History.SESSION_DURATION = Sessie lengte
diff --git a/src/resource/text/translation_no.native b/src/resource/text/translation_no.native
new file mode 100644
index 0000000..72977b8
--- /dev/null
+++ b/src/resource/text/translation_no.native
@@ -0,0 +1,330 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Haakon Meland Eriksen
+# Language: Norwegian (no)
+# jMemorize-Version: 1.2.3
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Kategori
+General.CREATED = Opprettet
+General.MODIFIED = Endret
+General.EXPIRES = Utgår
+General.LAST_TEST = Siste prøve
+General.DECK = Bunke
+General.DECKS = Bunker
+General.FRONTSIDE = Forside
+General.FLIPSIDE = Bakside
+General.OKAY = Ok
+General.APPLY = Bruk
+General.CANCEL = Avbryt
+General.ROOT_CATEGORY = Alle
+General.GENERAL = Generell
+General.PASSED = Bestått
+General.UNLEARNED = Ikke lært ennå
+General.EXPIRED = Utgått
+
+General.EMPTY_SIDES_ALERT = Du må skrive på begge sider av kortet.
+General.EMPTY_SIDES_ALERT_TITLE = Feil på kortsidene
+
+# main frame
+
+MainFrame.ABOUT = Om
+MainFrame.ABOUT_DESC = Om dette programmet
+
+MainFrame.ADD_CARD = Nytt kort
+MainFrame.ADD_CARD_DESC = Lag nytt kort
+
+MainFrame.ADD_CATEGORY = Ny kategori
+MainFrame.ADD_CATEGORY_DESC = Lag ny kategori
+MainFrame.ADD_CATEGORY_INPUT = Skriv navnet på den nye kategorien du vil lage.
+
+MainFrame.CATEGORY_TREE = Kategoritre
+MainFrame.CATEGORY_TREE_DESC = Vis/skjul kategoritre
+
+MainFrame.COPY = Kopi
+MainFrame.CUT = Klipp ut
+MainFrame.PASTE = Lim inn
+MainFrame.DELETE = Slett
+
+MainFrame.DELETE_CARDS_WARN = Du sletter nå {0} kort. Vil du slette?
+MainFrame.DELETE_CARDS_WARN_TITLE = Slett kort
+MainFrame.DELETE_CATEGORY_WARN = Ved å slette kategorien {0} slettes {1} kort. Vil du slette?
+
+MainFrame.EDIT_CARD = Endre kort
+MainFrame.EDIT_CARD_DESC = Endre og vis kortdetaljer
+
+MainFrame.ERROR_TITLE = Feil
+MainFrame.ERROR_LOAD = En feil oppstod mens filen {0} ble lest inn.
+MainFrame.ERROR_SAVE = En feil oppstod mens filen {0} ble lagret. Leksjonen ble ikke lagret.
+
+MainFrame.EXIT = Avslutt
+MainFrame.EXIT_DESC = Avslutt programmet
+
+MainFrame.FILE_FILTER_DESC = jMemorize-leksjoner
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = Finn
+MainFrame.FIND_DESC = Finn kort
+
+MainFrame.LEARN = Lær
+MainFrame.LEARN_DESC = Start læringsøkten med alle kort som ikke er lært ennå og utgåtte kort
+
+MainFrame.MENU_FILE = Fil
+MainFrame.MENU_EDIT = Endre
+MainFrame.MENU_HELP = Hjelp
+MainFrame.MENU_LESSON = Leksjon
+
+MainFrame.NEW = Ny
+MainFrame.NEW_DESC = Lag tom leksjon
+
+MainFrame.UNNAMED_LESSON = Ny leksjon
+
+MainFrame.OPEN = Åpne
+MainFrame.OPEN_DESC = Åpne leksjon
+
+MainFrame.REMOVE_CATEGORY_TITLE = Slett kategori
+MainFrame.REMOVE_DESC = Slett valgte element(er)
+
+MainFrame.RESET = Tilbakestill kort
+MainFrame.RESET_DESC = Tilbakestill kortstatistikk
+MainFrame.RESET_WARN = Du tilbakestiller nå {0} kort. Vil du tilbakestille?
+
+MainFrame.SAVE = Lagre
+MainFrame.SAVE_DESC = Lagre leksjon
+MainFrame.SAVE_AS = Lagre som...
+MainFrame.SAVE_AS_DESC = Lagre leksjon som...
+MainFrame.SAVE_MODIFIED = Leksjonen er endret. Vil du lagre endringene før du avslutter?
+
+MainFrame.IMPORT = Importér
+
+MainFrame.EXPORT = Eksportér
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Eksportér til *.pdf
+MainFrame.EXPORT_RTF_DESC = Eksportér til *.rtf
+MainFrame.EXPORT_CLEAN = Leksjon uten personlige læredata
+
+MainFrame.PREFERENCES = Innstillinger
+MainFrame.PREFERENCES_DESC = Sett dine innstillinger
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = Skriv over fil?
+MainFrame.CONFIRM_OVERWRITE = Filen finnes allerede. Vil du skrive over den?
+
+MainFrame.SELECT_CHARACTER_SET = Vennligst velg tegnsettet til filen.
+MainFrame.CHARACTER_SET = Tegnsett
+
+# files
+
+File.CSV = Kommaseparerte verdier (*.csv)
+File.TSV = Tabulatorseparerte verdier (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = Hjemmeside
+URL.MANUAL = Brukermanual
+URL.FEATURE_TRACKER = Ønskeliste
+URL.BUG_TRACKER = Feilmeldinger
+
+# preferences
+
+Preferences.USE_GZIP = Bruk GZIP formatet for å bruke mindre plass når leksjonene lagres.
+Preferences.LANGUAGE = Språk
+Preferences.RESTART = Språket du valgte vises neste gang du starter programmet.
+
+Preferences.FONT_SETTINGS = Skrifttype-innstillinger
+Preferences.FONT = Skrifttype
+Preferences.SIZE = Størrelse
+Preferences.PREVIEW = Forhåndsvisning
+
+# card table
+
+CardTable.COLUMNS = Kolonner
+CardTable.NO_DATE_DESC = Dette kortet har aldri vært prøvet.
+CardTable.NOT_LEARNED = Ikke lært
+CardTable.PATH = Sti
+CardTable.SELECTED_CARDS = Valgte kort
+
+# deck chart
+
+DeckChart.CARDS = Kort
+DeckChart.START_DECK = Startbunke
+DeckChart.SUMMARY = Sammendrag
+DeckChart.EXPIRED_CARDS = Utgåtte kort
+DeckChart.LEARNED_CARDS = Lærte kort
+DeckChart.UNLEARNED_CARDS = Ikke lært ennå
+
+Summary.LEARNED = Lært
+Summary.FAILED = Feilet
+Summary.RELEARNED = Lært på nytt
+Summary.SKIPPED = Skipped
+
+# deck table
+
+DeckTable.NEXT_DECK = Neste bunke
+DeckTable.NEXT_DECK_DESC = Vis neste bunke.
+DeckTable.PREV_DECK = Forrige bunke
+DeckTable.PREV_DECK_DESC = Vis forrige bunke.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Suksessrate
+EditCard.DETAILS_HISTORY = Læringshistorie
+
+EditCard.MODIFIED_WARN = Kortet er endret. Vil du beholde endringene før du fortsetter?
+EditCard.MODIFIED_WARN_TITLE = Kortet er endret.
+
+EditCard.NEXT_CARD = Neste kort
+EditCard.NEXT_CARD_DESC = Vis neste kort
+
+EditCard.PREV_CARD = Forrige kort
+EditCard.PREV_CARD_DESC = Vis forrige kort
+
+EditCard.REMOVE_CARD = Slett kort
+EditCard.REMOVE_CARD_DESC = Slett dette kortet
+
+EditCard.REMOVE_CARD_WARN = Er du sikker på at du vil slette dette kortet?
+EditCard.REMOVE_CARD_WARN_TITLE = Slett kort
+
+EditCard.RESET_CARD = Tilbakestill kort
+EditCard.RESET_CARD_DESC = Tilbakestiller dette kortet
+EditCard.RESET_CARD_WARN = Tilbakestilling av dette kortet vil flytte det tilbake til den første bunken.\nVil du flytte det tilbake?
+
+EditCard.TAB_SIDES = Sider
+EditCard.TAB_PROPERTIES = Egenskaper
+
+# find tool
+
+FindTool.FIND = Søk
+FindTool.BOTH_SIDES = Begge sider
+FindTool.MATCH_CASE = Treff STOR/liten bokstav
+FindTool.RESULTS = Resultater
+FindTool.SEARCH_TEXT = Søketekst
+FindTool.SETTINGS = Innstillinger
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Prøv å huske svaret
+Learn.DID_YOU_KNOW_ANSWER = Husket du riktig svar?
+Learn.YES = Ja
+Learn.NO = Nei
+
+Learn.CARD_COUNTER = Kortteller
+Learn.FLIPPED_CARD_SIDES = Snudde kortsider
+Learn.SHOW_ANSWER = Vis svaret
+Learn.SHOW_CATEGORY = Vis kategori
+Learn.SKIP_CARD = Hopp over kort
+Learn.STOP = Stopp læring
+Learn.TIMER = Stoppeklokke
+
+Learn.SESSION_RESULTS = Øktresultat
+Learn.CARD_PROGRESS = Kortframgang
+Learn.SESSION_PROGRESS = Øktframgang
+
+# learn settings
+
+LearnSettings.ADVANCED = Avansert
+LearnSettings.SCHEDULING = Tidsplan
+
+LearnSettings.CARDS_TO_LEARN = Kort som skal læres
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Lær alle kort som ikke er lært ennå og utgåtte kort
+LearnSettings.LEARN_UNLEARNED = Lær bare kort som ikke er lært ennå
+LearnSettings.LEARN_EXPIRED = Lær bare utgåtte kort
+
+LearnSettings.CARDS_ORDER = Rekkefølge på kortene
+LearnSettings.SHUFFLE_CARDS = Bland kort fra alle bunker og kategorier.
+LearnSettings.GROUP_CARDS = Gruppér kort etter kategori under innlæring.
+LearnSettings.NATURAL_CATEGORY_ORDER = Vis kategorier i fast naturlig rekkefølge.
+LearnSettings.RANDOM_CATEGORY_ORDER = Vis kategorier i tilfeldig rekkefølge.
+
+LearnSettings.DELIMITERS = Grenser
+LearnSettings.CARD_LIMIT = Kortgrense
+LearnSettings.CARD_LIMIT_TEXT = Begrens antall kort som skal prøves i denne økten til kortgrensen.
+LearnSettings.TIME_LIMIT = Tidsgrense
+LearnSettings.TIME_LIMIT_TEXT = Avslutt økten når en bestemt tidsgrense er nådd.
+LearnSettings.DONT_RETEST_FAILED = Ikke prøv på nytt kort som ikke ble husket i denne økten.
+
+LearnSettings.SCHEDULE_PRESETS = Forvalgt tidsintervall
+LearnSettings.DELAY_AFTER_LEVEL = Vent etter nivå {0}
+LearnSettings.DAYS = Dag
+LearnSettings.HOURS = Timer
+LearnSettings.MINUTES = Minutter
+
+LearnSettings.SIDE_MODE = Sidemodus
+LearnSettings.NORMAL_MODE = Lær i normal modus.
+LearnSettings.FLIP_MODE = Lær med baksiden av kortene.
+LearnSettings.RANDOM_MODE = Lær i tilfeldig modus med kortsidene snudd tilfeldig.
+LearnSettings.BOTH_MODE = Lær hver kortside så ofte som angitt.
+
+LearnSettings.START = Start økt\!
+LearnSettings.TITLE = Lær innstillinger
+
+# new card
+
+NewCard.ADD = Legg til
+NewCard.ADD_AND_NEXT = Legg til og lag neste
+
+NewCard.EDIT_RECENTLY = Endre siste
+NewCard.EDIT_RECENTLY_DESC = Endre siste kort
+
+NewCard.NEW_WINDOW = Nytt vindu
+NewCard.NEW_WINDOW_DESC = Åpne et nytt vindu for å legge til kort
+
+NewCard.TITLE = Lag kort
+
+NewCard.CLOSE_WARN = Advarsel
+NewCardManager.DISMISSED_WARN = Kortdata forkastes.\nVil du lage kortet før vinduet lukkes?
+
+# status bar
+
+StatusBar.CARDS = Kort
+StatusBar.EXPIRED = Utgått
+StatusBar.LEARNED = Lært
+StatusBar.UNLEARNED = Ikke lært ennå
+StatusBar.PARTIAL = Delvis lært
+
+StatusBar.LEARNING_CATEGORY = Læringskategori
+StatusBar.CARDS_LEFT = Kort som gjenstår
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Lineær (Standard)
+Strategy.CONSTANT_SCHEDULE = Konstant
+Strategy.EXPONENTIAL_SCHEDULE = Eksponensiell
+Strategy.QUADRATIC_SCHEDULE = Kvadratisk
+Strategy.CRAM_SCHEDULE = Pugg
+Strategy.CUSTOM_SCHEDULE = Egendefinert
+
+# time related
+
+Time.DAYS = dager
+Time.ONE_DAY = en dag
+Time.HOURS = timer
+Time.ONE_HOUR = en time
+Time.MINUTES = minutter
+Time.ONE_MINUTE = ett minutt
+Time.SECONDS = sekunder
+
+Time.PASSED = brukt
+
+Time.IN = i {0}
+Time.AGO = {0} siden
+
+# learn history
+
+History.TITLE = Historie
+History.ACTION = Vis historie
+History.RECENT = Siste økter
+History.BY_DATE = Økter etter dato
+History.BY_WEEK = Økter etter uke
+History.BY_MONTH = Økter etter måned
+History.BY_YEAR = Økter etter år
+History.SESSION_DURATION = Øktlengde
diff --git a/src/resource/text/translation_pl.properties b/src/resource/text/translation_pl.properties
new file mode 100644
index 0000000..ce37c2d
--- /dev/null
+++ b/src/resource/text/translation_pl.properties
@@ -0,0 +1,333 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Tomek Pedzimaz
+# Radek Ostrowski
+# Language: Polski (pl)
+# jMemorize-Version: 1.0.0
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+# Still there is on phrase for some untagged english sentences
+
+# general
+
+General.CATEGORY = Kategoria
+General.CREATED = stworzona
+General.EXPIRES = Wygas\u0142a
+General.LAST_TEST = Ostatni test
+General.DECK = Talia
+General.DECKS = Talie
+General.FRONTSIDE = Prz\u00f3d
+General.FLIPSIDE = Ty\u0142
+General.OKAY = Ok
+General.APPLY = Zastosuj
+General.CANCEL = Anuluj
+General.ROOT_CATEGORY = Wszystkie
+General.GENERAL = Og\u00f3lne
+General.PASSED = Zaliczone
+General.EXPIRED = Wygas\u0142e
+General.MODIFIED = Zmienione
+General.UNLEARNED = Nie nauczone
+
+General.EMPTY_SIDES_ALERT = Musisz okre\u015bli\u0107 tre\u015b\u0107 obu stron karty.
+General.EMPTY_SIDES_ALERT_TITLE = Bad card sides
+
+# main frame
+
+MainFrame.ABOUT = O programie
+MainFrame.ABOUT_DESC = O programie
+
+MainFrame.ADD_CARD = Dodaj kart\u0119
+MainFrame.ADD_CARD_DESC = Dodaj now\u0105 kart\u0119
+
+MainFrame.ADD_CATEGORY = Dodaj kategori\u0119
+MainFrame.ADD_CATEGORY_DESC = Dodaj now\u0105 kategori\u0119
+MainFrame.ADD_CATEGORY_INPUT = Wpisz nazw\u0119 nowej kategorii, kt\u00f3r\u0105 chcesz stworzy\u0107.
+
+MainFrame.CATEGORY_TREE = Kategorie
+MainFrame.CATEGORY_TREE_DESC = Poka\u017c/Ukryj drzewo kategorii
+
+MainFrame.COPY = Kopiuj
+MainFrame.CUT = Wytnij
+MainFrame.PASTE = Wklej
+MainFrame.DELETE = Usu\u0144
+
+MainFrame.DELETE_CARDS_WARN = Naci\u015bni\u0119cie przycisku spowoduje usuni\u0119cie {0} kart(y). Czy na pewno chcesz kontynuowa\u0107?
+MainFrame.DELETE_CARDS_WARN_TITLE = Usuni\u0119cie karty
+MainFrame.DELETE_CATEGORY_WARN = Usuni\u0119cie kategorii {0} spowoduje usuni\u0119cie {1} kart. Czy na pewno chcesz kontynuowa\u0107?
+
+MainFrame.EDIT_CARD = Edytuj kart\u0119
+MainFrame.EDIT_CARD_DESC = Edytuj w\u0142a\u015bciwo\u015bci karty.
+
+MainFrame.ERROR_TITLE = B\u0142\u0105d
+MainFrame.ERROR_LOAD = W trakice \u0142adowania pliku {0} wyst\u0105pi\u0142 b\u0142\u0105d.
+MainFrame.ERROR_SAVE = W trakcie zapisu pliku {0} wyst\u0105pi\u0142 b\u0142ad. Lekcja nie mo\u017ce by\u0107 zapisana.
+
+MainFrame.EXIT = Wyj\u015bcie
+MainFrame.EXIT_DESC = Wyj\u015bcie z aplikacji
+
+MainFrame.FILE_FILTER_DESC = Lekcje jMemorize
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = Znajd\u017a
+MainFrame.FIND_DESC = Znajd\u017a karty
+
+MainFrame.LEARN = Nauka
+MainFrame.LEARN_DESC = Rozpocznij lekcj\u0119 z wszystkimi nienauczonymi i wygas\u0142ymi kartami.
+
+MainFrame.MENU_FILE = Plik
+MainFrame.MENU_EDIT = Edycja
+MainFrame.MENU_HELP = Pomoc
+MainFrame.MENU_LESSON = Lekcja
+
+MainFrame.NEW = Nowy
+MainFrame.NEW_DESC = Stw\u00f3rz pust\u0105 lekcj\u0119
+
+MainFrame.UNNAMED_LESSON = Nowa lekcja
+
+MainFrame.OPEN = Otw\u00f3rz
+MainFrame.OPEN_DESC = Otw\u00f3rz plik lekcji
+
+MainFrame.REMOVE_CATEGORY_TITLE = Usuni\u0119cie kategorii
+MainFrame.REMOVE_DESC = Usu\u0144 zaznaczone pozycje.
+
+MainFrame.RESET = Reset karty
+MainFrame.RESET_DESC = Przywr\u00f3cenie warto\u015bci domy\u015blnych karty.
+MainFrame.RESET_WARN = Chcesz przywr\u00f3ci\u0107 warto\u015bci domy\u015blne dla {0} kart. Czy na pewno chcesz kontynuowa\u0107?
+
+MainFrame.SAVE = Zapisz
+MainFrame.SAVE_DESC = Zapisz lekcj\u0119
+MainFrame.SAVE_AS = Zapisz jako..
+MainFrame.SAVE_AS_DESC = Zapisz lekcj\u0119 jako..
+MainFrame.SAVE_MODIFIED = Lekcja zosta\u0142a zmodyfikowana. Czy chcesz j\u0105 zapisa\u0107 przed wyj\u015bciem z programu?
+
+MainFrame.IMPORT = Importuj
+MainFrame.EXPORT = Eksportuj do ...
+MainFrame.EXPORT_DESC = Eksportuj lekcj\u0119
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Eksportuj do *.pdf
+MainFrame.EXPORT_RTF_DESC = Eksportuj do *.rtf
+MainFrame.EXPORT_CLEAN = Eksportuj do pliku lekcji bez zachowania prywatnych danych
+
+MainFrame.PREFERENCES = Opcje
+MainFrame.PREFERENCES_DESC = Ustaw opcje
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = Nadpisa\u0107 plik?
+MainFrame.CONFIRM_OVERWRITE = Plik istnieje. Czy chcesz go nadpisa\u0107?
+
+MainFrame.CHARACTER_SET = Kodowanie
+MainFrame.SELECT_CHARACTER_SET = Prosz\u0119 wybra\u0107 kodowanie pliku.
+
+# file
+
+File.CSV = Warto\u015bci oddzielone przecinkami
+File.TSV = Warto\u015bci oddzielone tabulatorami
+
+# preferences
+
+Preferences.USE_GZIP = Spakuj lekcje do formatu GZIP.
+Preferences.LANGUAGE = J\u0119zyk
+Preferences.RESTART = Tw\u00f3j nowy j\u0119zyk pojawi si\u0119 przy ponownym uruchomieniu programu.
+
+Preferences.FONT_SETTINGS = Ustawienia czcionki
+Preferences.FONT = Czcionka
+Preferences.SIZE = Rozmiar
+Preferences.PREVIEW = Podgl\u0105d
+
+# card table
+
+CardTable.COLUMNS = Kolumny
+CardTable.NO_DATE_DESC = Ta karta nigdy nie by\u0142a testowana.
+CardTable.NOT_LEARNED = nie nauczona
+CardTable.PATH = \u015acie\u017cka
+CardTable.SELECTED_CARDS = Zaznaczone karty
+
+# deck chart
+
+DeckChart.CARDS = Karty
+DeckChart.START_DECK = Talia pocz\u0105tkowa
+DeckChart.SUMMARY = Podsumowanie
+DeckChart.EXPIRED_CARDS = Wygas\u0142e
+DeckChart.LEARNED_CARDS = Nauczone
+DeckChart.UNLEARNED_CARDS = Nienauczone
+
+# summary
+
+Summary.FAILED = Niezdane
+Summary.LEARNED = Nauczone
+Summary.RELEARNED = Nauczone ponownie
+Summary.SKIPPED = Opuszczone
+
+# deck table
+
+DeckTable.NEXT_DECK = Nast\u0119pna talia
+DeckTable.NEXT_DECK_DESC = Wy\u015bwietl kolejn\u0105 tali\u0119.
+DeckTable.PREV_DECK = Poprzednia talia
+DeckTable.PREV_DECK_DESC = Wy\u015bwietl poprzedni\u0105 tali\u0119.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Procent skuteczno\u015bci
+EditCard.DETAILS_HISTORY = Historia nauki
+
+EditCard.MODIFIED_WARN = Zawarto\u015b\u0107 karty zosta\u0142a zmodyfikowana. Czy chcesz j\u0105 zapisa\u0107?
+EditCard.MODIFIED_WARN_TITLE = Karta zosta\u0142a zmodyfikowana.
+
+EditCard.NEXT_CARD = Nast\u0119pna karta
+EditCard.NEXT_CARD_DESC = Wy\u015bwietl nast\u0119pn\u0105 kart\u0119
+
+EditCard.PREV_CARD = Poprzednia karta
+EditCard.PREV_CARD_DESC = Wy\u015bwietl poprzedni\u0105 kart\u0119
+
+EditCard.REMOVE_CARD = Usu\u0144 kart\u0119
+EditCard.REMOVE_CARD_DESC = Usu\u0144 bie\u017c\u0105c\u0105 kart\u0119
+
+EditCard.REMOVE_CARD_WARN = Czy na pewno chcesz usun\u0105\u0107 t\u0119 kart\u0119?
+EditCard.REMOVE_CARD_WARN_TITLE = Usuni\u0119cie karty
+
+EditCard.RESET_CARD = Reset karty
+EditCard.RESET_CARD_DESC = Rest bie\u017c\u0105cej karty
+EditCard.RESET_CARD_WARN = Przywr\u00f3cenie warto\u015bci domy\u015blnych karty przeniesie j\u0105 na pierwsz\u0105 tali\u0119.\nJeste\u015b tego pewny?
+
+EditCard.TAB_SIDES = Strony
+EditCard.TAB_PROPERTIES = W\u0142a\u015bciwo\u015bci
+
+# find tool
+
+FindTool.FIND = Szukaj
+FindTool.BOTH_SIDES = Obie strony
+FindTool.MATCH_CASE = Uwzgl\u0119dnij wielko\u015b\u0107 liter
+FindTool.RESULTS = Wyniki
+FindTool.SEARCH_TEXT = Szukany tekst
+FindTool.SETTINGS = Ustawienia
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Spr\u00f3buj zapami\u0119ta\u0107 odpowied\u017a
+Learn.DID_YOU_KNOW_ANSWER = Czy zna\u0142e(a)\u015b? poprawn\u0105 odpowied\u017a?
+Learn.YES = Tak
+Learn.NO = Nie
+
+Learn.CARD_COUNTER = Licznik kart
+Learn.FLIPPED_CARD_SIDES = Odwr\u00f3cone strony karty
+Learn.SHOW_ANSWER = Poka\u017c odpowied\u017a
+Learn.SHOW_CATEGORY = Poka\u017c kategori\u0119
+Learn.SKIP_CARD = Pomi\u0144 kart\u0119
+Learn.STOP = Zako\u0144cz nauk\u0119
+Learn.TIMER = Stoper
+
+Learn.CARD_PROGRESS = Post\u0119p karty
+Learn.SESSION_PROGRESS = Post\u0119p sesji
+Learn.SESSION_RESULTS = Rezultat Sesji
+
+# learn settings
+
+LearnSettings.ADVANCED = Dodatkowe
+LearnSettings.SCHEDULING = Harmonogram
+
+LearnSettings.CARDS_TO_LEARN = Karty do nauki
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Ucz si\u0119 wszystkich nienauczonych i wygas\u0142ych kart.
+LearnSettings.LEARN_UNLEARNED = Rozpocznij nauk\u0119 tylko z nienauczonymi kartami.
+LearnSettings.LEARN_EXPIRED = Rozpocznij nauk\u0119 tylko z wygas\u0142ych kartami.
+
+LearnSettings.CARDS_ORDER = Kolejno\u015b\u0107 kart
+LearnSettings.SHUFFLE_CARDS = Losuj karty ze wszystkich talii i kategorii.
+LearnSettings.GROUP_CARDS = Grupuj karty kategoriami w trakcie nauki.
+LearnSettings.NATURAL_CATEGORY_ORDER = Poka\u017c kategorie w porz\u0105dku rosn\u0105cym.
+LearnSettings.RANDOM_CATEGORY_ORDER = Poka\u017c kategori\u0119 w kolejno\u015bci losowej.
+
+LearnSettings.DELIMITERS = Ograniczenia
+LearnSettings.CARD_LIMIT = Limit kart
+LearnSettings.CARD_LIMIT_TEXT = Zako\u0144cz nauk\u0119 kiedy ilo\u015b\u0107 kart osi\u0105gnie ustalony limit.
+LearnSettings.TIME_LIMIT = Limit minut
+LearnSettings.TIME_LIMIT_TEXT = Zako\u0144cz sesj\u0119 po up\u0142yni\u0119ciu okre\u015blonego limitu czasu.
+LearnSettings.DONT_RETEST_FAILED = W danej sesji nie pokazuj ponownie kart, na kt\u00f3re udzielono niepopoprawnej odpowiedzi.
+
+LearnSettings.SCHEDULE_PRESETS = Ustawienia harmonogramu
+LearnSettings.DELAY_AFTER_LEVEL = Op\u00f3\u017anienie po osi\u0105gni\u0119ciu poziomu {0}
+LearnSettings.DAYS = Dni
+LearnSettings.HOURS = Godziny
+LearnSettings.MINUTES = Minuty
+
+LearnSettings.SIDE_MODE = Tryb prze\u0142\u0105czania stron kart
+LearnSettings.NORMAL_MODE = Ucz w trybie normalnym.
+LearnSettings.FLIP_MODE = W trakcie nauki pokazuj drug\u0105 stron\u0119 karty.
+LearnSettings.RANDOM_MODE = W trakcie naki odwracaj karty losowo.
+LearnSettings.BOTH_MODE = W trakcie nauki odwracaj karty tak cz\u0119sto jak ustalono.
+
+LearnSettings.START = Rozpocznij lekcj\u0119\!
+LearnSettings.TITLE = Ustawienia nauki
+
+# new card
+
+NewCard.ADD = Dodaj
+NewCard.ADD_AND_NEXT = Dodaj i stw\u00f3rz kolejn\u0105
+
+NewCard.EDIT_RECENTLY = Edytuj poprzedni\u0105
+NewCard.EDIT_RECENTLY_DESC = Edytuj ostatnio stworzon\u0105 kart\u0119
+
+NewCard.NEW_WINDOW = Nowe okno
+NewCard.NEW_WINDOW_DESC = Otw\u00f3rz nowe okno dodawania kart
+
+NewCard.TITLE = Tw\u00f3rz kart\u0119
+
+NewCard.CLOSE_WARN = Ostrze\u017cenie
+NewCardManager.DISMISSED_WARN = Dane zapisane w karcie zostan\u0105 utracone.\n Czy chcesz stworzy\u0107 kart\u0119 przed zamkni\u0119ciem okna?
+
+# status bar
+
+StatusBar.CARDS = Karty
+StatusBar.EXPIRED = Wygas\u0142e
+StatusBar.LEARNED = Nauczone
+StatusBar.UNLEARNED = Nienauczone
+StatusBar.PARTIAL = Cz\u0119\u015bciowo nauczone
+
+StatusBar.LEARNING_CATEGORY = Aktualna kategoria
+StatusBar.CARDS_LEFT = Pozosta\u0142o kart
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Liniowy (standardowy)
+Strategy.CONSTANT_SCHEDULE = Sta\u0142y
+Strategy.EXPONENTIAL_SCHEDULE = Wyk\u0142adniczy
+Strategy.QUADRATIC_SCHEDULE = Kwadratowy
+Strategy.INTENSIVE_SCHEDULE = Intensywny
+Strategy.CRAM_SCHEDULE = Zakuwanie
+Strategy.CUSTOM_SCHEDULE = W\u0142asny
+
+# time related
+
+Time.DAYS = dni
+Time.ONE_DAY = jeden dzie\u0144
+Time.HOURS = godziny
+Time.ONE_HOUR = jedna godzina
+Time.MINUTES = minuty
+Time.ONE_MINUTE = jedna minuta
+Time.SECONDS = sekundy
+Time.PASSED = min\u0119\u0142o
+Time.IN = in {0}
+Time.AGO = {0} temu
+
+# history
+
+History.ACTION = Poka\u017c histori\u0119
+History.BY_DATE = Sesje wed\u0142ug daty
+History.BY_MONTH = Sesje wed\u0142ug miesi\u0105ca
+History.BY_WEEK = Sesje wed\u0142ug tygodnia
+History.BY_YEAR = Sesje wed\u0142ug roku
+History.RECENT = Niedawne sesje
+History.SESSION_DURATION = D\u0142ugo\u015b\u0107 sesji
+History.TITLE = Historia
+
+# url
+
+URL.BUG_TRACKER = Bug tracker
+URL.FEATURE_TRACKER = Feature tracker
+URL.HOMEPAGE = Strona g\u0142owna
+URL.MANUAL = Podr\u0119cznik u\u017cytkownika
diff --git a/src/resource/text/translation_pt.native b/src/resource/text/translation_pt.native
new file mode 100644
index 0000000..3a4a3ea
--- /dev/null
+++ b/src/resource/text/translation_pt.native
@@ -0,0 +1,328 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Ney
+# Language: Portuguese (pl)
+# jMemorize-Version: 1.2.3
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Categoria
+General.CREATED = Criado em
+General.EXPIRES = Vence em
+General.LAST_TEST = Testado em
+General.DECK = Pilha
+General.DECKS = Pilhas
+General.FRONTSIDE = Frente
+General.FLIPSIDE = Verso
+General.OKAY = Ok
+General.APPLY = Aplicar
+General.CANCEL = Cancelar
+General.ROOT_CATEGORY = Todas
+General.GENERAL = Geral
+General.PASSED = Passado
+General.UNLEARNED = No aprendido
+General.MODIFIED = Modificado
+General.EXPIRED = Expirado
+
+General.EMPTY_SIDES_ALERT = necessrio preencher os dois lados do carto.
+General.EMPTY_SIDES_ALERT_TITLE = Frente ou Verso do Carto Com Problema
+
+# main frame
+
+MainFrame.ABOUT = Sobre
+MainFrame.ABOUT_DESC = Sobre este programa
+
+MainFrame.ADD_CARD = Adicionar carto
+MainFrame.ADD_CARD_DESC = Adiciona novo carto
+
+MainFrame.ADD_CATEGORY = Adicionar categoria
+MainFrame.ADD_CATEGORY_DESC = Adiciona nova categoria
+MainFrame.ADD_CATEGORY_INPUT = Entre com o nome da nova categoria que voc quer criar.
+
+MainFrame.CATEGORY_TREE = rvore
+MainFrame.CATEGORY_TREE_DESC = Mostra/Oculta rvore de categorias
+
+MainFrame.COPY = Copiar
+MainFrame.CUT = Recortar
+MainFrame.PASTE = Colar
+MainFrame.DELETE = Excluir
+
+MainFrame.DELETE_CARDS_WARN = Voc vai excluir {0} carte(s). Deseja continuar?
+MainFrame.DELETE_CARDS_WARN_TITLE = Excluso de Carto
+
+MainFrame.DELETE_CATEGORY_WARN = Excluir a categoria {0} ir excluir {1} cartes. Deseja continuar?
+
+MainFrame.EDIT_CARD = Editar carto
+MainFrame.EDIT_CARD_DESC = Edita e visualiza detalhes do carto
+
+MainFrame.ERROR_TITLE = Erro
+MainFrame.ERROR_LOAD = Ocorreu um erro ao tentar carregar o arquivo {0}.
+MainFrame.ERROR_SAVE = Ocorreu um erro ao tentar salvar o arquivo {0}. A lio no foi salva.
+
+MainFrame.EXIT = Sair
+MainFrame.EXIT_DESC = Sai do programa
+
+MainFrame.FILE_FILTER_DESC = Lies jMemorize
+
+MainFrame.FIND = Localizar
+MainFrame.FIND_DESC = Localiza cartes
+
+MainFrame.LEARN = Aprender
+MainFrame.LEARN_DESC = Comea sesso de aprendizado com todos os cartes no aprendidos e vencidos
+
+MainFrame.MENU_FILE = Arquivo
+MainFrame.MENU_EDIT = Editar
+MainFrame.MENU_HELP = Ajuda
+MainFrame.MENU_LESSON = Lio
+
+MainFrame.NEW = Nova
+MainFrame.NEW_DESC = Cria nova lio vazia
+
+MainFrame.UNNAMED_LESSON = Nova lio
+
+MainFrame.OPEN = Abrir
+MainFrame.OPEN_DESC = Abre lio gravada
+
+MainFrame.REMOVE_CATEGORY_TITLE = Excluso de Categoria
+MainFrame.REMOVE_DESC = Remove item(ns) atualmente selecionados
+
+MainFrame.RESET = Zerar carto
+MainFrame.RESET_DESC = Zera estatsticas do carto
+MainFrame.RESET_WARN = Voc vai zerar {0} carto(es). Deseja continuar?
+
+MainFrame.SAVE = Salvar
+MainFrame.SAVE_DESC = Salva lio
+MainFrame.SAVE_AS = Salvar como...
+MainFrame.SAVE_AS_DESC = Salva lio como...
+MainFrame.SAVE_MODIFIED = A lio foi modificada. Deseja salvar antes de sair do programa?
+
+MainFrame.PREFERENCES = Preferncias
+MainFrame.PREFERENCES_DESC = Modifica as preferncias
+
+MainFrame.EXPORT_PDF = Formato Adobe Reader (*.pdf)
+MainFrame.EXPORT_RTF_DESC = Exportar para *.rtf
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Formato do Adobe Reader (.pdf)
+MainFrame.EXPORT_CLEAN = Lio sem dados de aprendizado pessoais
+MainFrame.IMPORT = Importar
+MainFrame.CONFIRM_OVERWRITE = Arquivo j existente. Voc quer substitu-lo?
+MainFrame.EXPORT_RTF = Formato Rich Text (*.rtf)
+MainFrame.CONFIRM_OVERWRITE_TITLE = Substituir arquivo?
+MainFrame.EXPORT_PDF_DESC = Exportar para *.pdf
+MainFrame.EXPORT = Exportar
+MainFrame.SELECT_CHARACTER_SET = Por favor, selecione o conjunto de caracteres do arquivo.
+
+MainFrame.CHARACTER_SET = Conjunto de caracteres
+
+# files
+
+File.TSV = Valores Separados por Tabulao (*.tsv)
+File.CSV = Valores Separados Por Vrgula (*.csv)
+
+# preferences
+
+Preferences.USE_GZIP = Compactar lies em formato GZIP.
+Preferences.LANGUAGE = Lngua
+Preferences.RESTART = A lngua selecionada somente aparecer quando o programa for reinicializado.
+
+Preferences.FONT_SETTINGS = Configuraes de Fonte
+Preferences.FONT = Fonte
+Preferences.SIZE = Tamanho
+Preferences.PREVIEW = Visualizao
+
+# card table
+
+CardTable.COLUMNS = Colunas
+CardTable.NO_DATE_DESC = Este carto nunca foi testado.
+CardTable.NOT_LEARNED = no aprendido
+CardTable.PATH = Caminho
+CardTable.SELECTED_CARDS = Cartes selecionados
+
+# deck chart
+
+DeckChart.CARDS = C a r t es
+DeckChart.START_DECK = Pilha 0 (Inicial)
+DeckChart.SUMMARY = Resumo
+DeckChart.EXPIRED_CARDS = Cartes Vencidos
+DeckChart.LEARNED_CARDS = Cartes Aprendidos
+DeckChart.UNLEARNED_CARDS = Cartes No Aprendidos
+
+# deck table
+
+DeckTable.NEXT_DECK = Prxima pilha
+DeckTable.NEXT_DECK_DESC = Exibe prxima pilha.
+DeckTable.PREV_DECK = Pilha anterior
+DeckTable.PREV_DECK_DESC = Exibe pilha anterior.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Porcentagem de sucesso
+EditCard.DETAILS_HISTORY = Histrico de aprendizado
+
+EditCard.MODIFIED_WARN = Entradas de carto foram modificadas. Voc quer aplic-las antes de continuar?
+EditCard.MODIFIED_WARN_TITLE = Carto foi modificado.
+
+EditCard.NEXT_CARD = Prximo carto
+EditCard.NEXT_CARD_DESC = Exibe prximo carto
+
+EditCard.PREV_CARD = Carto anterior
+EditCard.PREV_CARD_DESC = Exibe carto anterior
+
+EditCard.REMOVE_CARD = Excluir carto
+EditCard.REMOVE_CARD_DESC = Exclui este carto
+
+EditCard.REMOVE_CARD_WARN = Voc tem certeza de que quer excluir este carto?
+EditCard.REMOVE_CARD_WARN_TITLE = Excluso de Carto
+
+EditCard.RESET_CARD = Zerar carto
+EditCard.RESET_CARD_DESC = Zera este carto
+EditCard.RESET_CARD_WARN = Zerar este carto o levar de volta primeira pilha.\nTem certeza?
+
+EditCard.TAB_SIDES = Lados
+EditCard.TAB_PROPERTIES = Propriedades
+
+# find tool
+
+FindTool.FIND = Localizar
+FindTool.BOTH_SIDES = Ambos os lados
+FindTool.MATCH_CASE = Diferenciar maisculas de minsculas
+FindTool.RESULTS = Resultados
+FindTool.SEARCH_TEXT = Localizar texto
+FindTool.SETTINGS = Configuraes
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Tente lembrar a resposta.
+Learn.DID_YOU_KNOW_ANSWER = Voc lembrou a resposta correta?
+Learn.YES = Sim
+Learn.NO = No
+
+Learn.CARD_COUNTER = Cartes Aprendidos
+Learn.FLIPPED_CARD_SIDES = Cartes virados
+Learn.SHOW_ANSWER = Resposta
+Learn.SHOW_CATEGORY = Mostrar categoria
+Learn.SKIP_CARD = Passa
+Learn.STOP = Parar aprendizado
+Learn.TIMER = Tempo
+
+Learn.CARD_PROGRESS = Progresso com os cartes
+Learn.SESSION_RESULTS = Resultados da Sesso
+Learn.SESSION_PROGRESS = Progresso da Sesso
+
+# learn settings
+
+LearnSettings.ADVANCED = Avanado
+LearnSettings.SCHEDULING = Cronograma
+
+LearnSettings.CARDS_TO_LEARN = Cartes a aprender
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Cartes no aprendidos e cartes vencidos.
+LearnSettings.LEARN_UNLEARNED = Apenas cartes no aprendidos.
+LearnSettings.LEARN_EXPIRED = Apenas cartes vencidos.
+
+LearnSettings.CARDS_ORDER = Ordenar Cartes
+LearnSettings.SHUFFLE_CARDS = Embaralhar cartes de todas as pilhas e categorias.
+LearnSettings.GROUP_CARDS = Agrupar cartes por categorias durante o aprendizado.
+LearnSettings.NATURAL_CATEGORY_ORDER = Mostrar categorias na ordem natural fixada.
+LearnSettings.RANDOM_CATEGORY_ORDER = Mostrar categorias em ordem aleatria.
+
+LearnSettings.DELIMITERS = Delimitadores
+LearnSettings.CARD_LIMIT = Limite de cartes
+LearnSettings.CARD_LIMIT_TEXT = Terminar a sesso quando um certo limite de cartes for atingido.
+LearnSettings.TIME_LIMIT = Limite de minutos
+LearnSettings.TIME_LIMIT_TEXT = Terminar a sesso quando um certo limite de tempo for atingido.
+LearnSettings.DONT_RETEST_FAILED = No testar novamente cartes no lembrados nesta sesso.
+
+LearnSettings.SCHEDULE_PRESETS = Esquema de Repetio
+LearnSettings.DELAY_AFTER_LEVEL = Intervalo aps nvel {0}
+LearnSettings.DAYS = Dias
+LearnSettings.HOURS = Horas
+LearnSettings.MINUTES = Minutos
+
+LearnSettings.SIDE_MODE = Frente/Verso dos cartes
+LearnSettings.NORMAL_MODE = Aprender no modo normal (frente primeiro).
+LearnSettings.FLIP_MODE = Aprender com os cartes virados (verso primeiro).
+LearnSettings.RANDOM_MODE = Aprender com os cartes virados ou no aleatoriamente.
+LearnSettings.BOTH_MODE = Aprender cada lado do carto com a freqncia especificada
+
+LearnSettings.START = Comear Sesso\!
+LearnSettings.TITLE = Configuraes de aprendizado
+
+# new card
+
+NewCard.ADD = Adicionar
+NewCard.ADD_AND_NEXT = Adicionar e criar o prximo
+
+NewCard.EDIT_RECENTLY = Editar anterior
+NewCard.EDIT_RECENTLY_DESC = Edita carto criado anteriormente
+
+NewCard.NEW_WINDOW = Nova janela
+NewCard.NEW_WINDOW_DESC = Abre outra janela de adicionar carto
+
+NewCard.TITLE = Criar Carto
+
+NewCard.CLOSE_WARN = Aviso
+NewCardManager.DISMISSED_WARN = Dados sobre o carto vo ser descartados.\nVoc quer criar o carto antes que a janela seja fechada?
+
+# status bar
+
+StatusBar.CARDS = Cartes
+StatusBar.EXPIRED = Vencidos
+StatusBar.LEARNED = Aprendidos
+StatusBar.UNLEARNED = No aprendidos
+StatusBar.PARTIAL = Parcialmente aprendido
+
+StatusBar.LEARNING_CATEGORY = Categoria de aprendizado
+StatusBar.CARDS_LEFT = Cartes restantes
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Linear (Padro)
+Strategy.CONSTANT_SCHEDULE = Constante
+Strategy.EXPONENTIAL_SCHEDULE = Exponencial
+Strategy.QUADRATIC_SCHEDULE = Quadrtico
+Strategy.CUSTOM_SCHEDULE = Personalizado
+Strategy.CRAM_SCHEDULE = Reviso Geral
+
+# time related
+
+Time.DAYS = dias
+Time.ONE_DAY = um dia
+Time.HOURS = horas
+Time.ONE_HOUR = uma hora
+Time.MINUTES = minutos
+Time.ONE_MINUTE = um minuto
+Time.SECONDS = segundos
+
+Time.PASSED = passado
+
+Time.IN = em {0}
+Time.AGO = h {0}
+
+# history
+
+History.BY_WEEK = Sesses por semana
+History.BY_MONTH = Sesses por ms
+History.SESSION_DURATION = Comprimento da Sesso
+History.RECENT = Sesses recentes
+History.ACTION = Mostrar histrico
+History.BY_YEAR = Sesses por ano
+History.BY_DATE = Sesses por dia
+History.TITLE = Histrico
+
+
+Summary.FAILED = No Lembrado
+Summary.RELEARNED = Reaprendido
+Summary.LEARNED = Aprendido
+Summary.SKIPPED = No testado
+
+URL.BUG_TRACKER = Rastreador de erros
+URL.HOMEPAGE = Pgina inicial
+URL.MANUAL = Manual do usurio
+URL.FEATURE_TRACKER = Rastreador de caractersticas
diff --git a/src/resource/text/translation_sv.native b/src/resource/text/translation_sv.native
new file mode 100644
index 0000000..ebb2322
--- /dev/null
+++ b/src/resource/text/translation_sv.native
@@ -0,0 +1,332 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Magnus Bodin
+# Language: Swedish (sv)
+# jMemorize-Version: 1.2.3
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = Kategori
+General.CREATED = Skapad
+General.MODIFIED = Modifierad
+General.EXPIRES = Gr ut
+General.LAST_TEST = Senaste test
+General.DECK = Hg
+General.DECKS = Hgar
+General.FRONTSIDE = Framsida
+General.FLIPSIDE = Baksida
+General.OKAY = OK
+General.APPLY = ndra
+General.CANCEL = Avbryt
+General.ROOT_CATEGORY = Alla
+General.GENERAL = Generellt
+General.PASSED = Avklarade
+General.UNLEARNED = Ej inlrda
+General.EXPIRED = Utggna
+
+General.EMPTY_SIDES_ALERT = Du mste skriva ngot p bgge sidor.
+General.EMPTY_SIDES_ALERT_TITLE = Kortsidor ej utfyllda
+
+# main frame
+
+MainFrame.ABOUT = Om
+MainFrame.ABOUT_DESC = Om detta program
+
+MainFrame.ADD_CARD = Lgg till kort
+MainFrame.ADD_CARD_DESC = Lgg till nytt kort
+
+MainFrame.ADD_CATEGORY = Lgg till kategori
+MainFrame.ADD_CATEGORY_DESC = Lgg till ny kategori
+MainFrame.ADD_CATEGORY_INPUT = Skriv namnet p den nya kategori du vill skapa.
+
+MainFrame.CATEGORY_TREE = Kategoritrd
+MainFrame.CATEGORY_TREE_DESC = Visa/Gm kategoritrdet
+
+MainFrame.COPY = Kopiera
+MainFrame.CUT = Klipp ut
+MainFrame.PASTE = Klistra in
+MainFrame.DELETE = Radera
+
+MainFrame.DELETE_CARDS_WARN = Du kommer nu att radera {0} kort. Vill du fortstta?
+MainFrame.DELETE_CARDS_WARN_TITLE = Radera kort
+
+MainFrame.DELETE_CATEGORY_WARN = Om du raderar katergori {0} kommer {1} kort ocks raderas. Vill du fortstta?
+
+MainFrame.EDIT_CARD = Redigera kort
+MainFrame.EDIT_CARD_DESC = Visa och redigera kort
+
+MainFrame.ERROR_TITLE = Fel
+MainFrame.ERROR_LOAD = Det uppstod ett fel nr filen skulle ppnas: {0}.
+MainFrame.ERROR_SAVE = Det uppstod ett fel nr filen {0} skulle sparas. Lektionen har inte sparats.
+
+MainFrame.EXIT = Avsluta
+MainFrame.EXIT_DESC = Avsluta programmet
+
+MainFrame.FILE_FILTER_DESC = jMemorize-lektioner
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = Sk
+MainFrame.FIND_DESC = Sk efter kort
+
+MainFrame.LEARN = Lr
+MainFrame.LEARN_DESC = Brja inlrning med alla nya och utggna kort
+
+MainFrame.MENU_FILE = Fil
+MainFrame.MENU_EDIT = Redigera
+MainFrame.MENU_HELP = Hjlp
+MainFrame.MENU_LESSON = Lektion
+
+MainFrame.NEW = Ny
+MainFrame.NEW_DESC = Skapa tom lektion
+
+MainFrame.UNNAMED_LESSON = Ny lektion
+
+MainFrame.OPEN = ppna
+MainFrame.OPEN_DESC = ppna lektionsfil
+
+MainFrame.REMOVE_CATEGORY_TITLE = Radera kategori
+MainFrame.REMOVE_DESC = Radera markerade kategorier
+
+MainFrame.RESET = terstll kort
+MainFrame.RESET_DESC = terstll kortets rknare
+MainFrame.RESET_WARN = Du kommer nu att terstlla {0} kort. Vill du fortstta?
+MainFrame.RESET_TITLE = terstllning av kort
+
+MainFrame.SAVE = Spara
+MainFrame.SAVE_DESC = Spara lektion
+MainFrame.SAVE_AS = Spara som...
+MainFrame.SAVE_AS_DESC = Spara lektion som...
+MainFrame.SAVE_MODIFIED = Lektionen r ndrad. Vill du spara innan du avslutar?
+
+MainFrame.IMPORT = Importera
+
+MainFrame.EXPORT = Exportera
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = Exportera till *.pdf
+MainFrame.EXPORT_RTF_DESC = Exportera till *.rtf
+MainFrame.EXPORT_CLEAN = Lektion utan personlig inlrningsinformation
+
+MainFrame.PREFERENCES = Instllningar
+MainFrame.PREFERENCES_DESC = ndra dina instllningar
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = Skriva ver fil?
+MainFrame.CONFIRM_OVERWRITE = Filen existerar redan. Vill du erstta den?
+
+MainFrame.SELECT_CHARACTER_SET = Vlj filens teckenstt
+MainFrame.CHARACTER_SET = Teckenstt
+
+# files
+
+File.CSV = Kommaseparerade flt (*.csv)
+File.TSV = Tabbseparerade flt (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = Hemsida
+URL.MANUAL = Anvndarhandledning
+URL.FEATURE_TRACKER = Feature-lista
+URL.BUG_TRACKER = Bugg-lista
+
+# preferences
+
+Preferences.USE_GZIP = Komprimera lektionerna i GZIP-format.
+Preferences.LANGUAGE = Sprk
+Preferences.RESTART = Ditt nya sprkval kommer att trda i kraft nsta gng du startar programmet.
+
+Preferences.FONT_SETTINGS = Teckensnitt-instllningar
+Preferences.FONT = Teckensnitt
+Preferences.SIZE = Storlek
+Preferences.PREVIEW = Frhandsvisning
+
+# card table
+
+CardTable.COLUMNS = Kolumner
+CardTable.NO_DATE_DESC = Detta kortet har inte testats.
+CardTable.NOT_LEARNED = Ej inlrt
+CardTable.PATH = Skvg
+CardTable.SELECTED_CARDS = Valda kort
+
+# deck chart
+
+DeckChart.CARDS = Kort
+DeckChart.START_DECK = Starthg
+DeckChart.SUMMARY = versikt
+DeckChart.EXPIRED_CARDS = Utgngna kort
+DeckChart.LEARNED_CARDS = Inlrda kort
+DeckChart.UNLEARNED_CARDS = Ej inlrda kort
+
+Summary.LEARNED = Inlrda
+Summary.FAILED = Missade
+Summary.RELEARNED = terinlrda
+Summary.SKIPPED = verhoppade
+
+# deck table
+
+DeckTable.NEXT_DECK = Nsta hg
+DeckTable.NEXT_DECK_DESC = Visa nsta hg
+DeckTable.PREV_DECK = Fregende hg
+DeckTable.PREV_DECK_DESC = Visa fregende hg
+
+# card editting
+
+EditCard.DETAILS_RATIO = Inlrningskvot
+EditCard.DETAILS_HISTORY = Inlrningshistorik
+
+EditCard.MODIFIED_WARN = Detta kortet har ndrats, vill du spara innan du fortstter?
+EditCard.MODIFIED_WARN_TITLE = Kortet har ndrats.
+
+EditCard.NEXT_CARD = Nsta kort
+EditCard.NEXT_CARD_DESC = Visa nsta kort
+
+EditCard.PREV_CARD = Fregende kort
+EditCard.PREV_CARD_DESC = Visa fregende kort
+
+EditCard.REMOVE_CARD = Radera kort
+EditCard.REMOVE_CARD_DESC = Radera nuvarande kort
+
+EditCard.REMOVE_CARD_WARN = r du sker p att du vill radera detta kort?
+EditCard.REMOVE_CARD_WARN_TITLE = Radering av kort
+
+EditCard.RESET_CARD = terstll kort
+EditCard.RESET_CARD_DESC = terstller statistik fr nuvarande kort
+EditCard.RESET_CARD_WARN = Om detta kort terstlls kommer det att flyttas till starthgen, r du sker p att du vill gra detta?
+
+EditCard.TAB_SIDES = Sidor
+EditCard.TAB_PROPERTIES = Egenskaper
+
+# find tool
+
+FindTool.FIND = Sk
+FindTool.BOTH_SIDES = Bda sidor
+FindTool.MATCH_CASE = Tag hnsyn till versaler och gemener
+FindTool.RESULTS = Resultat
+FindTool.SEARCH_TEXT = Sktext
+FindTool.SETTINGS = Instllningar
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = Frsk att komma ihg svaret
+Learn.DID_YOU_KNOW_ANSWER = Kunde du svaret?
+Learn.YES = Ja
+Learn.NO = Nej
+
+Learn.CARD_COUNTER = Kortrknare
+Learn.FLIPPED_CARD_SIDES = Omvnda kortsidor
+Learn.SHOW_ANSWER = Visa svar
+Learn.SHOW_CATEGORY = Visa kategori
+Learn.SKIP_CARD = Hoppa ver kortet
+Learn.STOP = Avsluta inlrning
+Learn.TIMER = Timer
+
+Learn.SESSION_RESULTS = Resultat denna omgng
+Learn.CARD_PROGRESS = Detta kort:
+Learn.SESSION_PROGRESS = Denna omgng:
+
+# learn settings
+
+LearnSettings.ADVANCED = Avancerat
+LearnSettings.SCHEDULING = Kalender
+
+LearnSettings.CARDS_TO_LEARN = Kort som skal inlras
+LearnSettings.LEARN_UNLEARNED_EXPIRED = Lr alla utgnga kort samt de som nnu ej lrts in
+LearnSettings.LEARN_UNLEARNED = Lr endast kort som nnu ej lrts in
+LearnSettings.LEARN_EXPIRED = Lr endast utgnga kort
+
+LearnSettings.CARDS_ORDER = Kortens ordningsfljd
+LearnSettings.SHUFFLE_CARDS = Blanda kort mellan hgar och kategorier
+LearnSettings.GROUP_CARDS = Gruppera kort inom kategorier under inlrning
+LearnSettings.NATURAL_CATEGORY_ORDER = Visa kategorierna i frutbestmd ordningfljd
+LearnSettings.RANDOM_CATEGORY_ORDER = Visa kategorierne i slumpartad ordningsfljd
+
+LearnSettings.DELIMITERS = Skiljetecken
+LearnSettings.CARD_LIMIT = Antal kort
+LearnSettings.CARD_LIMIT_TEXT = Begrnsa antalet kort fr denna omgng
+LearnSettings.TIME_LIMIT = Tidsbegrnsning (minuter)
+LearnSettings.TIME_LIMIT_TEXT = Avsluta inlrning efter en viss tid.
+LearnSettings.DONT_RETEST_FAILED = tertesta inte kort som missats denna omgng
+
+LearnSettings.SCHEDULE_PRESETS = Kalenderfrval
+LearnSettings.DELAY_AFTER_LEVEL = Frdrjning efter niv {0}
+LearnSettings.DAYS = Dagar
+LearnSettings.HOURS = Timmar
+LearnSettings.MINUTES = Minuter
+
+LearnSettings.SIDE_MODE = Sidindstlling
+LearnSettings.NORMAL_MODE = Normal inlrning.
+LearnSettings.FLIP_MODE = Inlrning med omvnda kortsidor
+LearnSettings.RANDOM_MODE = Inlrning med slumpartat sidval
+LearnSettings.BOTH_MODE = Lr varje kort angivet antal gnger
+
+LearnSettings.START = Brja Inlrningsomgng\!
+LearnSettings.TITLE = Inlrningsinstllningar
+
+# new card
+
+NewCard.ADD = Lgg till
+NewCard.ADD_AND_NEXT = Lgg till och skapa nsta
+
+NewCard.EDIT_RECENTLY = Redigera senaste
+NewCard.EDIT_RECENTLY_DESC = Redigera senaste skapade kort
+
+NewCard.NEW_WINDOW = Nytt fnster
+NewCard.NEW_WINDOW_DESC = ppna ett nytt fnster
+
+NewCard.TITLE = Lgg till kort
+
+NewCard.CLOSE_WARN = Varning
+NewCardManager.DISMISSED_WARN = Kortdata hller p att raderas. Vill du skapa kortet innan du stnger fnstret?
+
+# status bar
+
+StatusBar.CARDS = Kort
+StatusBar.EXPIRED = Utgngna
+StatusBar.LEARNED = Inlrda
+StatusBar.UNLEARNED = Icke inlrda
+StatusBar.PARTIAL = Delvis inlrda
+
+StatusBar.LEARNING_CATEGORY = Kategori
+StatusBar.CARDS_LEFT = terstende kort
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = Linjr (Standard)
+Strategy.CONSTANT_SCHEDULE = Konstant
+Strategy.EXPONENTIAL_SCHEDULE = Exponentiell
+Strategy.QUADRATIC_SCHEDULE = Kvadratisk
+Strategy.CRAM_SCHEDULE = Snabbgenomgng
+Strategy.CUSTOM_SCHEDULE = Egendefinierad
+
+# time related
+
+Time.DAYS = dagar
+Time.ONE_DAY = en dag
+Time.HOURS = timmar
+Time.ONE_HOUR = en timme
+Time.MINUTES = minuter
+Time.ONE_MINUTE = en minut
+Time.SECONDS = sekunder
+
+Time.PASSED = passerat
+
+Time.IN = Om {0}
+Time.AGO = {0} sedan
+
+# learn history
+
+History.ACTION = Visa historik
+History.TITLE = Historik
+History.RECENT = Senaste omgngar
+History.BY_DATE = Omgngar per datum
+History.BY_WEEK = Omgngar per vecka
+History.BY_MONTH = Omgngar per mnad
+History.BY_YEAR = Omgngar per r
+History.SESSION_DURATION = Lngd p omgng
diff --git a/src/resource/text/translation_tr.properties b/src/resource/text/translation_tr.properties
new file mode 100644
index 0000000..876a731
--- /dev/null
+++ b/src/resource/text/translation_tr.properties
@@ -0,0 +1,313 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Authors: Ali Baser
+# Mert Nuhoglu
+# Language: Turkish (tr)
+# jMemorize-Version: 1.2.3
+# ------------------------------------------------------------------------------
+#
+
+# general
+
+General.CATEGORY = Ulam
+General.CREATED = Yarat\u0131lm\u0131\u015f
+General.EXPIRES = Sona Erenler
+General.LAST_TEST = Son Test
+General.DECK = Deste
+General.DECKS = Desteler
+General.FRONTSIDE = \u00d6ny\u00fcz
+General.FLIPSIDE = \u00c7evrilmi\u015f y\u00fcz
+General.OKAY = Tamam
+General.APPLY = Uygula
+General.CANCEL = \u0130ptal
+General.ROOT_CATEGORY = Hepsi
+General.GENERAL = Genel
+General.EMPTY_SIDES_ALERT = Kart\u0131n her iki yan\u0131n\u0131 da belirtmelisin.
+General.EMPTY_SIDES_ALERT_TITLE = K\u00f6t\u00fc kart yanlar\u0131
+General.EXPIRED = S\u00fcresi Ge\u00e7ti
+General.MODIFIED = De\u011fi\u015ftirilmi\u015f
+General.PASSED = Ge\u00e7ti
+General.UNLEARNED = \u00d6\u011frenilmemi\u015f
+
+# main frame
+
+MainFrame.ABOUT = Hakk\u0131nda
+MainFrame.ABOUT_DESC = Bu Uygulama Hakk\u0131nda
+
+MainFrame.ADD_CARD = Kart Ekle
+MainFrame.ADD_CARD_DESC = Yeni Kart Ekle
+
+MainFrame.ADD_CATEGORY = Ulam Ekle
+MainFrame.ADD_CATEGORY_DESC = Yeni Ulam Ekle
+MainFrame.ADD_CATEGORY_INPUT = Olu\u015fturmak \u0130stedi\u011fin Yeni Ulam\u0131n \u0130smini gir
+
+MainFrame.CATEGORY_TREE = Ulam agac\u0131
+MainFrame.CATEGORY_TREE_DESC = Ulam agac\u0131n\u0131 G\u00f6ster/Gizle
+
+MainFrame.COPY = Kopyala
+MainFrame.CUT = Kes
+MainFrame.PASTE = Yap\u0131\u015ft\u0131r
+MainFrame.DELETE = Sil
+
+MainFrame.DELETE_CARDS_WARN = {0} Kart(lar)\u0131 silmek \u00fczeresiniz. Devam etmek istiyor musunuz?
+MainFrame.DELETE_CARDS_WARN_TITLE = Kart Silme
+
+MainFrame.DELETE_CATEGORY_WARN = Ulam siliniyor {0} silinecek {1} kartlar. Devam etmek istiyor musunuz?
+
+MainFrame.EDIT_CARD = Kart D\u00fczenle
+MainFrame.EDIT_CARD_DESC = Kart\u0131 D\u00fczenle ve Ayr\u0131nt\u0131lar\u0131n\u0131 G\u00f6ster
+
+MainFrame.ERROR_TITLE = Hata
+MainFrame.ERROR_LOAD = Dosya Y\u00fcklenirken Bir Hata Olu\u015ftu{0}.
+MainFrame.ERROR_SAVE = Dosya Kaydedilirken Bir Hata Olu\u015ftu {0}. Ders kaydedilmedi
+
+MainFrame.EXIT = \u00c7\u0131k\u0131\u015f
+MainFrame.EXIT_DESC = \u00c7\u0131k\u0131\u015f Uygulamas\u0131
+
+MainFrame.FILE_FILTER_DESC = jMemorize Dersleri
+
+MainFrame.FIND = Bul
+MainFrame.FIND_DESC = Kartlar\u0131 Bul
+
+MainFrame.LEARN = \u00d6\u011fren
+MainFrame.LEARN_DESC = Son ve \u00f6\u011frenilmemi\u015f kartlar ile oturumu \u00f6\u011frenmeyhe ba\u015fla.
+
+MainFrame.MENU_FILE = Dosya
+MainFrame.MENU_EDIT = D\u00fczenle
+MainFrame.MENU_HELP = Yard\u0131m
+MainFrame.MENU_LESSON = Ders
+
+MainFrame.NEW = Yeni
+MainFrame.NEW_DESC = Bo\u015f Bir Ders Olu\u015ftur
+
+MainFrame.UNNAMED_LESSON = Yeni Ders
+
+MainFrame.OPEN = A\u00e7
+MainFrame.OPEN_DESC = Ders Dosyas\u0131 A\u00e7
+
+MainFrame.REMOVE_CATEGORY_TITLE = Ulam Silme
+MainFrame.REMOVE_DESC = \u0130\u015faretli olan \u00f6\u011feleri kald\u0131r
+
+MainFrame.RESET = Kart S\u0131f\u0131rla
+MainFrame.RESET_DESC = Kart \u0130statistiklerini S\u0131f\u0131rla
+MainFrame.RESET_WARN = {0} Kartlar\u0131 s\u0131f\u0131rlamak \u00fczeresiniz . Devam etmek istiyor musunuz?
+
+MainFrame.SAVE = Kaydet
+MainFrame.SAVE_DESC = Ders Kaydet
+MainFrame.SAVE_AS = Farkl\u0131 Kaydet
+MainFrame.SAVE_AS_DESC = Ders Olarak Kaydet
+MainFrame.SAVE_MODIFIED = Ders de\u011fi\u015ftirildi. \u00c7\u0131kmadan \u00f6nce kaydetmek istiyor musunuz?
+
+MainFrame.PREFERENCES = \u00d6zellikler
+MainFrame.PREFERENCES_DESC = \u00d6zellikleri Belirle
+
+MainFrame.CHARACTER_SET = Harf kodlama
+MainFrame.CONFIRM_OVERWRITE = Dosya mevcut. \u00dczerine yazmak istiyor musunuz?
+MainFrame.CONFIRM_OVERWRITE_TITLE = Dosyan\u0131n \u00fczerine yaz\u0131ls\u0131n m\u0131?
+MainFrame.EXPORT = G\u00f6nder
+MainFrame.EXPORT_CLEAN = Ki\u015fisel \u00f6\u011frenme verisi olmayan ders
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_PDF_DESC = *.pdf \u00fcret
+MainFrame.EXPORT_RTF = Zengin Metin Format\u0131 (*.rtf)
+MainFrame.EXPORT_RTF_DESC = *.rtf\u00a0format\u0131nda\u00a0kaydet
+MainFrame.IMPORT = Ekle
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+MainFrame.SELECT_CHARACTER_SET = L\u00fctfen dosyan\u0131n harf kodlamas\u0131n\u0131 se\u00e7iniz.
+
+# preferences
+
+Preferences.USE_GZIP = GZIP bi\u00e7iminde dersleri s\u0131k\u0131\u015ft\u0131r.
+Preferences.LANGUAGES = Diller
+Preferences.RESTART = Uygulamay\u0131 ba\u015flatt\u0131\u011f\u0131nda yeni dil se\u00e7imin g\u00f6r\u00fcnecek.
+Preferences.FONT_SETTINGS = Yaz\u0131 Bi\u00e7imleri
+Preferences.FONT = Yaz\u0131
+Preferences.SIZE = Boyut
+Preferences.PREVIEW = \u00d6nizleme
+Preferences.LANGUAGE = Dil
+
+# card table
+
+CardTable.COLUMNS = S\u00fctunlar
+CardTable.NO_DATE_DESC = Bu Kart Test Edilemez
+CardTable.NOT_LEARNED = \u00d6\u011frenilmemi\u015f
+CardTable.PATH = Yol
+CardTable.SELECTED_CARDS = Se\u00e7ilmi\u015f Kartlar
+
+# deck chart
+
+DeckChart.CARDS = Kartlar
+DeckChart.START_DECK = Deste Ba\u015flat
+DeckChart.SUMMARY = \u00d6zet
+DeckChart.EXPIRED_CARDS = Son Kartlar
+DeckChart.LEARNED_CARDS = \u00d6\u011frenilmi\u015f Kartlar
+DeckChart.UNLEARNED_CARDS = \u00d6\u011frenilmemi\u015f Kartlar
+
+# deck table
+
+DeckTable.NEXT_DECK = Sonraki Deste
+DeckTable.NEXT_DECK_DESC = Sonraki Desteyi G\u00f6ster.
+DeckTable.PREV_DECK = \u00d6nceki Deste
+DeckTable.PREV_DECK_DESC = \u00d6nceki Desteyi G\u00f6ster.
+
+# card editting
+
+EditCard.DETAILS_RATIO = Ba\u015far\u0131 Oran\u0131
+EditCard.DETAILS_HISTORY = Tarih \u00d6\u011fren
+EditCard.MODIFIED_WARN = De\u011fi\u015ftirilmemi\u015f kart giri\u015fleri. Devam etmeden \u00f6nce bunlar\u0131 uygulamak istiyor musun?
+EditCard.MODIFIED_WARN_TITLE = Kart de\u011fi\u015ftirilmi\u015f.
+EditCard.NEXT_CARD = Sonraki Kart
+EditCard.NEXT_CARD_DESC = Sonraki Kart\u0131 G\u00f6ster
+EditCard.PREV_CARD = \u00d6nceki Kart
+EditCard.PREV_CARD_DESC = \u00d6nceki Kart\u0131 G\u00f6ster
+EditCard.REMOVE_CARD = Kart\u0131 Kald\u0131r
+EditCard.REMOVE_CARD_DESC = Y\u00fcr\u00fcrl\u00fckteki Kart\u0131 Kald\u0131r
+EditCard.REMOVE_CARD_WARN = Bu Kart\u0131 Silmek \u0130stedi\u011finizden Emin Misiniz?
+EditCard.REMOVE_CARD_WARN_TITLE = Kart Silme
+EditCard.RESET_CARD = Kart S\u0131f\u0131rla
+EditCard.RESET_CARD_DESC = Y\u00fcr\u00fcrl\u00fckteki Kart\u0131 S\u0131f\u0131rla
+EditCard.RESET_CARD_WARN = S\u0131f\u0131rlad\u0131\u011f\u0131n bu kart ilk desteye ta\u015f\u0131nacak.\nEmin misiniz?
+EditCard.TAB_SIDES = Taraflar
+EditCard.TAB_PROPERTIES = \u00d6zellikler
+
+# find tool
+
+FindTool.FIND = Arama
+FindTool.BOTH_SIDES = Her iki yan
+FindTool.MATCH_CASE = B\u00fcy\u00fck/K\u00fc\u00e7\u00fck Harfe Duyarl\u0131
+FindTool.RESULTS = Sonu\u00e7lar
+FindTool.SEARCH_TEXT = Metin Arama
+FindTool.SETTINGS = Ayarlar
+
+# learn
+
+Learn.REMEMBER_THE_ANSWER = Cevab\u0131 Hat\u0131rlamaya \u00c7al\u0131\u015f
+Learn.DID_YOU_KNOW_ANSWER = Do\u011fru Cevab\u0131 Biliyor Muydun?
+Learn.YES = Evet
+Learn.NO = Hay\u0131r
+Learn.CARD_COUNTER = Kart Say\u0131c\u0131
+Learn.FLIPPED_CARD_SIDES = \u00c7evrilmi\u015f Kart Yanlar\u0131
+Learn.SHOW_ANSWER = Do\u011fru Cevab\u0131 G\u00f6ster
+Learn.SHOW_CATEGORY = Ulam G\u00f6ster
+Learn.SKIP_CARD = Kart Atlama
+Learn.STOP = \u00d6\u011frenemyi Durdur
+Learn.TIMER = Zamanlay\u0131c\u0131
+Learn.CARD_PROGRESS = Kart \u0130lerleme
+Learn.SESSION_PROGRESS = Oturum \u0130lerleme
+Learn.SESSION_RESULTS = Oturum Sonu\u00e7lar\u0131
+
+# learn settings
+
+LearnSettings.ADVANCED = Geli\u015fmi\u015f
+LearnSettings.SCHEDULING = Programlama
+
+LearnSettings.CARDS_TO_LEARN = Kartlar\u0131n \u00d6\u011frenilmesi
+LearnSettings.LEARN_UNLEARNED_EXPIRED = \u00d6\u011frenilmemi\u015f ve son kartlar\u0131n hepsini \u00f6\u011fren.
+LearnSettings.LEARN_UNLEARNED = Sadece \u00f6\u011frenilmemi\u015f kartlar\u0131 \u00f6\u011fren.
+LearnSettings.LEARN_EXPIRED = Sadece son kartlar\u0131 \u00f6\u011fren.
+
+LearnSettings.CARDS_ORDER = Kartlar\u0131n S\u0131ralanmas\u0131
+LearnSettings.SHUFFLE_CARDS = B\u00fct\u00fcn deste ve ulamlardaki kartlar\u0131 kar\u0131\u015ft\u0131r.
+LearnSettings.GROUP_CARDS = Kartlar\u0131 \u00f6\u011frenirken ulamlar\u0131na g\u00f6re grupla.
+LearnSettings.NATURAL_CATEGORY_ORDER = Ulamlar\u0131 sabit s\u0131ras\u0131na g\u00f6re g\u00f6ster.
+LearnSettings.RANDOM_CATEGORY_ORDER = Ulamlar\u0131 rastgele s\u0131raya g\u00f6re g\u00f6ster.
+
+LearnSettings.DELIMITERS = S\u0131n\u0131rlay\u0131c\u0131lar
+LearnSettings.CARD_LIMIT = Kart Limiti
+LearnSettings.CARD_LIMIT_TEXT = Kart limiti doldu\u011fu zaman oturumu sona erdir.
+LearnSettings.TIME_LIMIT = Dakika limiti
+LearnSettings.TIME_LIMIT_TEXT = Zaman limiti doldu\u011fu zaman oturumu sona erdir.
+LearnSettings.DONT_RETEST_FAILED = Oturumda ba\u015far\u0131s\u0131z olmu\u015f kartlar\u0131 yeniden deneme.
+
+LearnSettings.SCHEDULE_PRESETS = Belirlenmi\u015f olanlar\u0131 programla
+LearnSettings.DELAY_AFTER_LEVEL = Sonraki seviyeden sonra geciktir {0}
+LearnSettings.DAYS = G\u00fcnler
+LearnSettings.HOURS = Saatler
+LearnSettings.MINUTES = Dakikalar
+
+LearnSettings.SIDE_MODE = Yan kipi.
+LearnSettings.NORMAL_MODE = Normal Kipte \u00d6\u011frenme.
+LearnSettings.FLIP_MODE = \u00c7evrilmi\u015f kart yanlar\u0131n\u0131 \u00f6\u011fren.
+LearnSettings.RANDOM_MODE = Kart yanlar\u0131 rasgele \u00e7evrilmi\u015f oldu\u011fu halde rasgele modda \u00f6\u011fren.
+LearnSettings.BOTH_MODE = Her kart y\u00fcz\u00fcn\u00fc belirtilen\u00a0s\u0131kl\u0131kta \u00f6\u011fren.
+
+LearnSettings.START = Oturuma Ba\u015fla\!
+LearnSettings.TITLE = Ayarlar\u0131 \u00d6\u011fren
+
+# new card
+
+NewCard.ADD = Ekle
+NewCard.ADD_AND_NEXT = Ekle ve Sonrakini Olu\u015ftur
+NewCard.EDIT_RECENTLY = En son kartlar\u0131 d\u00fczenle
+NewCard.EDIT_RECENTLY_DESC = Son yarat\u0131lm\u0131\u015f kartlar\u0131 d\u00fczenle
+NewCard.NEW_WINDOW = Yeni Pencere
+NewCard.NEW_WINDOW_DESC = Eklenmi\u015f Yeni Bir Kart Penceresi A\u00e7
+NewCard.TITLE = Kart Olu\u015ftur
+NewCard.CLOSE_WARN = Uyar\u0131
+NewCardManager.DISMISSED_WARN = Kart bilgileri at\u0131lmak \u00fczere.\nKart\u0131 pencere kapanmadan \u00f6nce olu\u015fturmak ister misin?
+
+# status bar
+
+StatusBar.CARDS = Kartlar
+StatusBar.EXPIRED = Son Kalan
+StatusBar.LEARNED = \u00d6\u011frenilen
+StatusBar.UNLEARNED = \u00d6\u011frenilmemi\u015f
+StatusBar.LEARNING_CATEGORY = Ulam \u00d6\u011frenimi
+StatusBar.CARDS_LEFT = Kalan kartlar
+StatusBar.PARTIAL = K\u0131smen \u00f6\u011frenilmi\u015f
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = \u0130lk de\u011fer
+Strategy.CONSTANT_SCHEDULE = Sabit
+Strategy.EXPONENTIAL_SCHEDULE = \u00dcstel
+Strategy.QUADRATIC_SCHEDULE = \u0130kinci dereceden
+Strategy.CUSTOM_SCHEDULE = \u00d6zel
+Strategy.CRAM_SCHEDULE = Yo\u011fun \u00c7al\u0131\u015fma
+
+# summary
+
+Summary.FAILED = Kald\u0131
+Summary.LEARNED = \u00d6\u011frenilmi\u015f
+Summary.RELEARNED = Tekrar \u00f6\u011frenilmi\u015f
+Summary.SKIPPED = Atlan\u0131ld\u0131
+
+# url
+
+URL.BUG_TRACKER = Bug (hata) takibi
+URL.FEATURE_TRACKER = \u00d6zellik Takibi
+URL.HOMEPAGE = Ana sayfa
+URL.MANUAL = Kullan\u0131c\u0131 k\u0131lavuzu
+
+# file
+
+File.CSV = Virgulle\u00a0Ayr\u0131lm\u0131\u015f\u00a0De\u011ferler (*.csv)
+File.TSV = Tabla\u00a0Ayr\u0131lm\u0131\u015f\u00a0De\u011ferler (*.tsv)
+
+# history
+
+History.ACTION = Tarih\u00e7eyi g\u00f6ster
+History.BY_DATE = Tarihe g\u00f6re oturumlar
+History.BY_MONTH = Ayl\u0131k oturumlar
+History.BY_WEEK = Haftal\u0131k oturumlar
+History.BY_YEAR = Y\u0131ll\u0131k oturumlar
+History.RECENT = Son oturumlar
+History.SESSION_DURATION = Oturum Uzunlu\u011fu
+History.TITLE = Tarih\u00e7e
+
+# time related
+
+Time.DAYS = g\u00fcnler
+Time.ONE_DAY = bir g\u00fcn
+Time.HOURS = saatler
+Time.ONE_HOUR = bir saat
+Time.MINUTES = dakikalar
+Time.ONE_MINUTE = bir dakika
+Time.SECONDS = saniyeler
+
+Time.PASSED = ge\u00e7en
+
+Time.IN = i\u00e7inde {0}
+Time.AGO = {0} \u00f6nce
+
diff --git a/src/resource/text/translation_zh.properties b/src/resource/text/translation_zh.properties
new file mode 100644
index 0000000..3c1ddca
--- /dev/null
+++ b/src/resource/text/translation_zh.properties
@@ -0,0 +1,331 @@
+#
+# This is a translation file for jMemorize (http://www.riad.de/jmemorize)
+#
+# ------------------------------------------------------------------------------
+# Author: Tianyi Cui (tianyicui at gmail.com)
+# Language: Simplified Chinese (zh)
+# jMemorize-Version: 1.3.0
+# ------------------------------------------------------------------------------
+#
+# Notes:
+# DESC is the text that will show up as tooltip.
+# TITLE is the title of the new window / dialog.
+
+# general
+
+General.CATEGORY = \u7C7B\u522B
+General.CREATED = \u5DF2\u521B\u5EFA
+General.MODIFIED = \u5DF2\u4FEE\u6539
+General.EXPIRES = \u8FC7\u671F
+General.LAST_TEST = \u4E0A\u6B21\u6D4B\u8BD5
+General.DECK = \u5361\u7247\u7EC4
+General.DECKS = \u5361\u7247\u7EC4
+General.FRONTSIDE = \u6B63\u9762
+General.FLIPSIDE = \u80CC\u9762
+General.OKAY = \u597D\u7684
+General.APPLY = \u5E94\u7528
+General.CANCEL = \u53D6\u6D88
+General.ROOT_CATEGORY = \u5168\u90E8
+General.GENERAL = \u5E38\u89C4
+General.PASSED = \u901A\u8FC7
+General.UNLEARNED = \u672A\u5B66
+General.EXPIRED = \u8FC7\u671F\u7684
+
+General.EMPTY_SIDES_ALERT = \u60A8\u5E94\u8BE5\u5199\u4E0A\u5361\u7684\u4E24\u9762\u3002
+General.EMPTY_SIDES_ALERT_TITLE = \u9519\u8BEF\u7684\u5361\u9762\u3002
+
+# main frame
+
+MainFrame.ABOUT = \u5173\u4E8E
+MainFrame.ABOUT_DESC = \u5173\u4E8E\u672C\u7A0B\u5E8F
+
+MainFrame.ADD_CARD = \u6DFB\u52A0\u5361\u7247
+MainFrame.ADD_CARD_DESC = \u6DFB\u52A0\u65B0\u5361\u7247
+
+MainFrame.ADD_CATEGORY = \u6DFB\u52A0\u7C7B\u522B
+MainFrame.ADD_CATEGORY_DESC = \u6DFB\u52A0\u65B0\u7C7B\u522B
+MainFrame.ADD_CATEGORY_INPUT = \u8F93\u5165\u60A8\u60F3\u521B\u5EFA\u7684\u65B0\u7C7B\u522B\u3002
+
+MainFrame.CATEGORY_TREE = \u5206\u7C7B\u6811
+MainFrame.CATEGORY_TREE_DESC = \u663E\u793A/\u9690\u85CF\u5206\u7C7B\u6811
+
+MainFrame.COPY = \u590D\u5236
+MainFrame.CUT = \u526A\u5207
+MainFrame.PASTE = \u7C98\u8D34
+MainFrame.DELETE = \u5220\u9664
+
+MainFrame.DELETE_CARDS_WARN = \u60A8\u5C06\u5220\u9664 {0} \u5F20\u5361\u7247\uFF0C\u7EE7\u7EED\u5417\uFF1F
+MainFrame.DELETE_CARDS_WARN_TITLE = \u5220\u9664\u5361\u7247
+MainFrame.DELETE_CATEGORY_WARN = \u5220\u9664\u7C7B\u522B {0} \u5C06\u5220\u9664 {1} \u5F20\u5361\u7247\uFF0C\u7EE7\u7EED\u5417\uFF1F
+
+MainFrame.EDIT_CARD = \u7F16\u8F91\u5361\u7247
+MainFrame.EDIT_CARD_DESC = \u7F16\u8F91\u5E76\u5BDF\u770B\u5361\u7247
+
+MainFrame.ERROR_TITLE = \u9519\u8BEF
+MainFrame.ERROR_LOAD = \u8F7D\u5165\u6587\u4EF6 {0} \u65F6\u51FA\u9519\u4E86\u3002
+MainFrame.ERROR_SAVE = \u4FDD\u5B58\u6587\u4EF6 {0} \u65F6\u51FA\u9519\u4E86\uFF0C\u8BFE\u7A0B\u672A\u88AB\u4FDD\u5B58\u3002
+
+MainFrame.EXIT = \u9000\u51FA
+MainFrame.EXIT_DESC = \u9000\u51FA\u7A0B\u5E8F
+
+MainFrame.FILE_FILTER_DESC = jMemorize \u8BFE\u7A0B
+MainFrame.PDF_FILE_FILTER_DESC = PDF - Portable Document Format (.pdf)
+
+MainFrame.FIND = \u67E5\u627E
+MainFrame.FIND_DESC = \u67E5\u627E\u5361\u7247
+
+MainFrame.LEARN = \u5B66\u4E60
+MainFrame.LEARN_DESC = \u5F00\u59CB\u5B66\u4E60\u6240\u6709\u672A\u5B66\u548C\u8FC7\u671F\u7684\u5361\u7247
+
+MainFrame.MENU_FILE = \u6587\u4EF6
+MainFrame.MENU_EDIT = \u7F16\u8F91
+MainFrame.MENU_HELP = \u5E2E\u52A9
+MainFrame.MENU_LESSON = \u8BFE\u7A0B
+
+MainFrame.NEW = \u65B0\u5EFA
+MainFrame.NEW_DESC = \u521B\u5EFA\u7A7A\u767D\u8BFE\u7A0B
+
+MainFrame.UNNAMED_LESSON = \u65B0\u8BFE\u7A0B
+
+MainFrame.OPEN = \u6253\u5F00
+MainFrame.OPEN_DESC = \u6253\u5F00\u8BFE\u7A0B\u6587\u4EF6
+
+MainFrame.REMOVE_CATEGORY_TITLE = \u5220\u9664\u7C7B\u522B
+MainFrame.REMOVE_DESC = \u5220\u9664\u9009\u5B9A\u7684\u9879\u76EE
+
+MainFrame.RESET = \u91CD\u7F6E\u5361\u7247
+MainFrame.RESET_DESC = \u91CD\u7F6E\u5361\u7247\u7EDF\u8BA1
+MainFrame.RESET_WARN = \u60A8\u5C06\u5220\u9664 {0} \u5F20\u5361\u7247\uFF0C\u7EE7\u7EED\u5417\uFF1F
+
+MainFrame.SAVE = \u4FDD\u5B58
+MainFrame.SAVE_DESC = \u4FDD\u5B58\u8BFE\u7A0B
+MainFrame.SAVE_AS = \u53E6\u5B58\u4E3A..
+MainFrame.SAVE_AS_DESC = \u53E6\u5B58\u8BFE\u7A0B\u4E3A..
+MainFrame.SAVE_MODIFIED = \u8BFE\u7A0B\u5DF2\u88AB\u4FEE\u6539\uFF0C\u9000\u51FA\u524D\u8981\u4FDD\u5B58\u5417\uFF1F
+
+MainFrame.IMPORT = \u5BFC\u5165
+
+MainFrame.EXPORT = \u5BFC\u51FA
+MainFrame.EXPORT_PDF = Portable Document Format (*.pdf)
+MainFrame.EXPORT_RTF = Rich Text Format (*.rtf)
+MainFrame.EXPORT_PDF_DESC = \u5BFC\u51FA\u4E3A *.pdf
+MainFrame.EXPORT_RTF_DESC = \u5BFC\u51FA\u4E3A *.rtf
+MainFrame.EXPORT_CLEAN = \u4E0D\u542B\u4E2A\u4EBA\u5B66\u4E60\u6570\u636E\u7684\u8BFE\u7A0B
+
+MainFrame.PREFERENCES = \u9009\u9879
+MainFrame.PREFERENCES_DESC = \u8BBE\u5B9A\u60A8\u7684\u4F7F\u7528\u504F\u597D
+
+MainFrame.CONFIRM_OVERWRITE_TITLE = \u8986\u76D6\u6587\u4EF6\uFF1F
+MainFrame.CONFIRM_OVERWRITE = \u6587\u4EF6\u5DF2\u5B58\u5728\uFF0C\u662F\u5426\u8986\u76D6\uFF1F
+
+MainFrame.SELECT_CHARACTER_SET = \u8BF7\u9009\u62E9\u6587\u4EF6\u7684\u5B57\u7B26\u96C6\u3002
+MainFrame.CHARACTER_SET = \u5B57\u7B26\u96C6
+
+# files
+
+File.CSV = Comma Separated Values (*.csv)
+File.TSV = Tabular Separated Values (*.tsv)
+
+# web sites
+
+URL.HOMEPAGE = \u4E3B\u9875
+URL.MANUAL = \u7528\u6237\u624B\u518C
+URL.FEATURE_TRACKER = \u529F\u80FD\u9700\u6C42
+URL.BUG_TRACKER = Bug \u62A5\u544A
+
+# preferences
+
+Preferences.USE_GZIP = \u5C06\u8BFE\u7A0B\u538B\u7F29\u6210 GZIP \u683C\u5F0F\u3002
+Preferences.LANGUAGE = \u8BED\u8A00
+Preferences.RESTART = \u65B0\u7684\u8BED\u8A00\u8BBE\u5B9A\u5C06\u5728\u4E0B\u6B21\u7A0B\u5E8F\u542F\u52A8\u65F6\u751F\u6548\u3002
+
+Preferences.FONT_SETTINGS = \u5B57\u4F53\u8BBE\u7F6E
+Preferences.FONT = \u5B57\u4F53
+Preferences.SIZE = \u5927\u5C0F
+Preferences.PREVIEW = \u9884\u89C8
+
+# card table
+
+CardTable.COLUMNS = \u5217
+CardTable.NO_DATE_DESC = \u8FD9\u5F20\u5361\u7247\u4ECE\u672A\u88AB\u6D4B\u8BD5\u3002
+CardTable.NOT_LEARNED = \u672A\u5B66
+CardTable.PATH = \u8DEF\u5F84
+CardTable.SELECTED_CARDS = \u9009\u5B9A\u7684\u5361\u7247
+
+# deck chart
+
+DeckChart.CARDS = \u5361\u7247
+DeckChart.START_DECK = \u521D\u59CB\u5361\u7247\u7EC4
+DeckChart.SUMMARY = \u603B\u8BA1
+DeckChart.EXPIRED_CARDS = \u8FC7\u671F\u7684\u5361\u7247
+DeckChart.LEARNED_CARDS = \u5DF2\u5B66\u7684\u5361\u7247
+DeckChart.UNLEARNED_CARDS = \u672A\u5B66\u7684\u5361\u7247
+
+Summary.LEARNED = \u5DF2\u5B66\u7684
+Summary.FAILED = \u5931\u8D25\u7684
+Summary.RELEARNED = \u91CD\u5B66\u7684
+Summary.SKIPPED = \u8DF3\u8FC7\u7684
+
+# deck table
+
+DeckTable.NEXT_DECK = \u4E0B\u4E2A\u5361\u7247\u7EC4
+DeckTable.NEXT_DECK_DESC = \u663E\u793A\u4E0B\u4E2A\u5361\u7247\u7EC4
+DeckTable.PREV_DECK = \u524D\u4E00\u4E2A\u5361\u7247\u7EC4
+DeckTable.PREV_DECK_DESC = \u663E\u793A\u524D\u4E00\u4E2A\u5361\u7247\u7EC4
+
+# card editting
+
+EditCard.DETAILS_RATIO = \u901A\u8FC7\u7387
+EditCard.DETAILS_HISTORY = \u5B66\u4E60\u5386\u7A0B
+
+EditCard.MODIFIED_WARN = \u5361\u7247\u6761\u76EE\u5DF2\u88AB\u4FEE\u6539\uFF0C\u7ACB\u5373\u5E94\u7528\u5417\uFF1F
+EditCard.MODIFIED_WARN_TITLE = \u5361\u7247\u5DF2\u88AB\u4FEE\u6539
+
+EditCard.NEXT_CARD = \u4E0B\u4E00\u5F20\u5361\u7247
+EditCard.NEXT_CARD_DESC = \u663E\u793A\u4E0B\u4E00\u5F20\u5361\u7247
+
+EditCard.PREV_CARD = \u524D\u4E00\u5F20\u5361\u7247
+EditCard.PREV_CARD_DESC = \u663E\u793A\u524D\u4E00\u5F20\u5361\u7247
+
+EditCard.REMOVE_CARD = \u79FB\u9664\u5361\u7247
+EditCard.REMOVE_CARD_DESC = \u79FB\u9664\u5F53\u524D\u5361\u7247
+
+EditCard.REMOVE_CARD_WARN = \u60A8\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u5F20\u5361\u7247\u5417\uFF1F
+EditCard.REMOVE_CARD_WARN_TITLE = \u5361\u7247\u5220\u9664
+
+EditCard.RESET_CARD = \u91CD\u7F6E\u5361\u7247
+EditCard.RESET_CARD_DESC = \u91CD\u7F6E\u5F53\u524D\u5361\u7247
+EditCard.RESET_CARD_WARN = \u91CD\u7F6E\u8FD9\u5F20\u5361\u7247\u4F1A\u5C06\u5B83\u79FB\u81F3\u7B2C\u4E00\u4E2A\u5361\u7247\u7EC4\u3002\n\u786E\u5B9A\u5417\uFF1F
+
+EditCard.TAB_SIDES = \u9762
+EditCard.TAB_PROPERTIES = \u5C5E\u6027
+
+# find tool
+
+FindTool.FIND = \u641C\u7D22
+FindTool.BOTH_SIDES = \u4E24\u9762
+FindTool.MATCH_CASE = \u5168\u5B57\u5339\u914D
+FindTool.RESULTS = \u7ED3\u679C
+FindTool.SEARCH_TEXT = \u641C\u7D22\u6587\u672C
+FindTool.SETTINGS = \u8BBE\u5B9A
+
+# learn
+
+
+Learn.REMEMBER_THE_ANSWER = \u8BD5\u7740\u56DE\u60F3\u8FD9\u4E2A\u7B54\u6848
+Learn.DID_YOU_KNOW_ANSWER = \u4F60\u77E5\u9053\u6B63\u786E\u7684\u7B54\u6848\u5417\uFF1F
+Learn.YES = \u662F
+Learn.NO = \u5426
+
+Learn.CARD_COUNTER = \u5361\u7247\u8BA1\u6570
+Learn.FLIPPED_CARD_SIDES = \u7ED9\u5361\u7247\u7FFB\u9762
+Learn.SHOW_ANSWER = \u663E\u793A\u7B54\u6848
+Learn.SHOW_CATEGORY = \u663E\u793A\u7C7B\u522B
+Learn.SKIP_CARD = \u8DF3\u8FC7\u5361\u7247
+Learn.STOP = \u505C\u6B62\u5B66\u4E60
+Learn.TIMER = \u8BA1\u65F6\u5668
+
+Learn.SESSION_RESULTS = \u6D4B\u8BD5\u7ED3\u679C
+Learn.CARD_PROGRESS = \u5361\u7247\u8FDB\u7A0B
+Learn.SESSION_PROGRESS = \u6D4B\u8BD5\u8FDB\u7A0B
+
+# learn settings
+
+LearnSettings.ADVANCED = \u9AD8\u7EA7
+LearnSettings.SCHEDULING = \u65F6\u95F4\u8868
+
+LearnSettings.CARDS_TO_LEARN = \u8981\u5B66\u7684\u5361\u7247
+LearnSettings.LEARN_UNLEARNED_EXPIRED = \u5B66\u4E60\u6240\u6709\u672A\u5B66\u548C\u8FC7\u671F\u7684\u5361\u7247\u3002
+LearnSettings.LEARN_UNLEARNED = \u53EA\u5B66\u672A\u5B66\u7684\u5361\u7247\u3002
+LearnSettings.LEARN_EXPIRED = \u53EA\u5B66\u8FC7\u671F\u7684\u5361\u7247\u3002
+LearnSettings.LEARN_SELECTED = \u53EA\u5B66\u9009\u5B9A\u7684\u5361\u7247\u3002
+
+LearnSettings.CARDS_ORDER = \u5361\u7247\u987A\u5E8F
+LearnSettings.SHUFFLE_CARDS = \u6253\u4E71\u6240\u6709\u5361\u7247\u7684\u987A\u5E8F\u3002
+LearnSettings.GROUP_CARDS = \u5728\u5B66\u4E60\u4E2D\u6839\u636E\u7C7B\u522B\u5206\u7EC4\u3002
+LearnSettings.NATURAL_CATEGORY_ORDER = \u4EE5\u56FA\u5B9A\u987A\u5E8F\u663E\u793A\u7C7B\u522B\u3002
+LearnSettings.RANDOM_CATEGORY_ORDER = \u4EE5\u968F\u673A\u987A\u5E8F\u663E\u793A\u7C7B\u522B\u3002
+
+LearnSettings.DELIMITERS = \u5206\u5272\u7B26
+LearnSettings.CARD_LIMIT = \u5361\u7247\u9650\u5236
+LearnSettings.CARD_LIMIT_TEXT = \u6700\u591A\u8981\u5B66\u7684\u5361\u7247\u6570\u3002
+LearnSettings.TIME_LIMIT = \u65F6\u95F4\u9650\u5236
+LearnSettings.TIME_LIMIT_TEXT = \u5230\u8FBE\u65F6\u95F4\u9650\u5236\u540E\u7ED3\u675F\u6D4B\u8BD5\u3002
+LearnSettings.DONT_RETEST_FAILED = \u5E76\u4E0D\u91CD\u65B0\u6D4B\u8BD5\u5728\u672C\u6B21\u6D4B\u8BD5\u4E2D\u5931\u8D25\u7684\u5361\u7247\u3002
+
+LearnSettings.SCHEDULE_PRESETS = \u9884\u7F6E\u65B9\u6848
+LearnSettings.DELAY_AFTER_LEVEL = \u5B66\u8FC7 {0} \u6B21\u540E\u7684\u8FC7\u671F\u65F6\u95F4
+LearnSettings.DAYS = \u5929
+LearnSettings.HOURS = \u5C0F\u65F6
+LearnSettings.MINUTES = \u5206\u949F
+
+LearnSettings.SIDE_MODE = \u7FFB\u9762\u6A21\u5F0F
+LearnSettings.NORMAL_MODE = \u4EE5\u4E00\u822C\u6A21\u5F0F\u5B66\u4E60\u3002
+LearnSettings.FLIP_MODE = \u4EE5\u80CC\u9762\u6A21\u5F0F\u5B66\u4E60\u3002
+LearnSettings.RANDOM_MODE = \u4EE5\u968F\u673A\u6A21\u5F0F\u5B66\u4E60\uFF0C\u5361\u7247\u5C06\u4F1A\u88AB\u968F\u673A\u7684\u7FFB\u9762\u3002
+LearnSettings.BOTH_MODE = \u4EE5\u6307\u5B9A\u7684\u6B21\u6570\u5B66\u4E60\u5361\u7247\u7684\u4E24\u9762\u3002
+
+LearnSettings.START = \u5F00\u59CB\u6D4B\u8BD5\uFF01
+LearnSettings.TITLE = \u5B66\u4E60\u8BBE\u7F6E
+
+# new card
+
+NewCard.ADD = \u6DFB\u52A0
+NewCard.ADD_AND_NEXT = \u6DFB\u52A0\u5E76\u521B\u5EFA\u4E0B\u4E00\u4E2A
+
+NewCard.EDIT_RECENTLY = \u7F16\u8F91\u6700\u8FD1\u7684
+NewCard.EDIT_RECENTLY_DESC = \u7F16\u8F91\u6700\u8FD1\u521B\u5EFA\u7684\u5361\u7247
+
+NewCard.NEW_WINDOW = \u65B0\u7A97\u53E3
+NewCard.NEW_WINDOW_DESC = \u6253\u5F00\u53E6\u4E00\u4E2A\u6DFB\u52A0\u5361\u7247\u7684\u7A97\u53E3
+
+NewCard.TITLE = \u521B\u5EFA\u5361\u7247
+
+NewCard.CLOSE_WARN = \u8B66\u544A
+NewCardManager.DISMISSED_WARN = \u5361\u7247\u4E2D\u7684\u6570\u636E\u5C06\u88AB\u4E22\u5F03\u3002\u5728\u5173\u95ED\u7A97\u53E3\u524D\u521B\u5EFA\u8FD9\u5F20\u5361\u7247\uFF1F
+
+# status bar
+
+StatusBar.CARDS = \u5361\u7247
+StatusBar.EXPIRED = \u672A\u5B66\u7684
+StatusBar.LEARNED = \u5DF2\u5B66
+StatusBar.UNLEARNED = \u672A\u5B66
+StatusBar.PARTIAL = \u90E8\u5206\u5DF2\u5B66
+
+StatusBar.LEARNING_CATEGORY = \u5206\u7C7B\u5B66\u4E60
+StatusBar.CARDS_LEFT = \u5269\u4E0B\u7684\u5361\u7247
+
+# strategy
+
+Strategy.LINEAR_DEFAULT_SCHEDULE = \u7EBF\u6027\u6A21\u5F0F\uFF08\u9ED8\u8BA4\uFF09
+Strategy.CONSTANT_SCHEDULE = \u5E38\u6570\u6A21\u5F0F
+Strategy.EXPONENTIAL_SCHEDULE = \u6307\u6570\u6A21\u5F0F
+Strategy.QUADRATIC_SCHEDULE = \u4E8C\u6B21\u6A21\u5F0F
+Strategy.CRAM_SCHEDULE = \u8003\u524D\u6A21\u5F0F
+Strategy.CUSTOM_SCHEDULE = \u81EA\u5B9A\u4E49
+
+# time related
+
+Time.DAYS = \u5929
+Time.ONE_DAY = \u4E00\u5929
+Time.HOURS = \u5C0F\u65F6
+Time.ONE_HOUR = \u4E00\u5C0F\u65F6
+Time.MINUTES = \u5206\u949F
+Time.ONE_MINUTE = \u4E00\u5206\u949F
+Time.SECONDS = \u79D2
+
+Time.PASSED = \u901A\u8FC7
+
+Time.IN = \u5728 {0}
+Time.AGO = {0} \u4E4B\u524D
+
+# learn history
+
+History.TITLE = \u5386\u53F2
+History.ACTION = \u663E\u793A\u5386\u53F2
+History.RECENT = \u6700\u8FD1\u7684\u6D4B\u8BD5
+History.BY_DATE = \u6309\u5929
+History.BY_WEEK = \u6309\u5468
+History.BY_MONTH = \u6309\u6708
+History.BY_YEAR = \u6309\u5E74
+History.SESSION_DURATION = \u6D4B\u8BD5\u7528\u65F6