Add support for translations and update translations

This commit is contained in:
Grégory Soutadé 2012-02-26 14:24:04 +01:00
parent 4ea7efd178
commit 83d144ca3c
9 changed files with 654 additions and 558 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-08-06 17:24+0200\n" "POT-Creation-Date: 2012-02-26 14:03+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,188 +17,196 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: src/view/StatsPanel.cpp:384 src/view/PreferencesPanel.cpp:832 #: src/view/StatsPanel.cpp:415
msgid " - " msgid " - "
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:125 src/view/PreferencesPanel.cpp:496 #: src/view/UsersDialog.cpp:120 src/view/PreferencesPanel.cpp:826
#: src/view/PreferencesPanel.cpp:516 src/view/PreferencesPanel.cpp:727 #: src/view/PreferencesPanel.cpp:846 src/view/PreferencesPanel.cpp:978
#: src/view/PreferencesPanel.cpp:746 src/view/PreferencesPanel.cpp:790 #: src/view/PreferencesPanel.cpp:997 src/view/PreferencesPanel.cpp:1038
msgid " already exists" msgid " already exists"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:283 #: src/view/ImportPanel.cpp:278
msgid " and " msgid " and "
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:114 src/view/ExportPanel.cpp:106 #: src/view/SearchPanel.cpp:104 src/view/ExportPanel.cpp:98
msgid " entries found" msgid " entries found"
msgstr "" msgstr ""
#: src/model/Database.cpp:106 #: src/model/Database.cpp:112
msgid " not found, aborting" msgid " not found, aborting"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:879 #: src/view/AccountPanel.cpp:979
msgid " operations ?" msgid " operations ?"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:839 #: src/view/PreferencesPanel.cpp:1090
msgid " profil ?" msgid " profil ?"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:289 #: src/view/ImportPanel.cpp:284
msgid " will be created, is it ok ?" msgid " will be created, is it ok ?"
msgstr "" msgstr ""
#: src/model/Database.cpp:92 #: src/model/Database.cpp:102
msgid "!! Warning !! If there was a bug, the old database will be suppressed !" msgid "!! Warning !! If there was a bug, the old database will be suppressed !"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:282 #: src/view/ImportPanel.cpp:277
#, c-format #, c-format
msgid "%d accounts" msgid "%d accounts"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:287 #: src/view/ImportPanel.cpp:282
#, c-format #, c-format
msgid "%d categories" msgid "%d categories"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:116 src/view/ExportPanel.cpp:108 #: src/view/StatsPanel.cpp:355
msgid "0 line"
msgstr ""
#: src/view/SearchPanel.cpp:106 src/view/ExportPanel.cpp:100
msgid "1 entry found" msgid "1 entry found"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:83 src/view/grid/GridAccount.cpp:63 #: src/view/SearchBanner.cpp:93 src/view/grid/GridAccount.cpp:72
msgid "Account" msgid "Account"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:496 src/view/PreferencesPanel.cpp:516 #: src/view/PreferencesPanel.cpp:826 src/view/PreferencesPanel.cpp:846
msgid "Account " msgid "Account "
msgstr "" msgstr ""
#: src/controller/KissCount.cpp:372 #: src/controller/KissCount.cpp:344
msgid "Account 1" msgid "Account 1"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:74 src/view/AccountPanel.cpp:112 #: src/view/ImportPanel.cpp:64 src/view/AccountPanel.cpp:471
msgid "Account name" msgid "Account name"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:111 #: src/view/AccountPanel.cpp:470
msgid "Account number" msgid "Account number"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:336 src/view/PreferencesPanel.cpp:60 #: src/view/StatsPanel.cpp:354 src/view/PreferencesPanel.cpp:47
msgid "Accounts" msgid "Accounts"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:1107 #: src/view/AccountPanel.cpp:1195
msgid "Accounts updated until " msgid "Accounts updated until "
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:79 #: src/view/StatsPanel.cpp:339
msgid "Amount"
msgstr ""
#: src/view/SearchBanner.cpp:89
msgid "Amount from" msgid "Amount from"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:80 #: src/view/SearchBanner.cpp:90
msgid "Amount to" msgid "Amount to"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:1114 #: src/view/AccountPanel.cpp:1200
msgid "Any account updated !" msgid "Any account updated !"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:175 src/view/ExportPanel.cpp:138 #: src/view/ImportPanel.cpp:170 src/view/ExportPanel.cpp:131
msgid "Any engine can process this file !" msgid "Any engine can process this file !"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:839 src/view/AccountPanel.cpp:874 #: src/view/PreferencesPanel.cpp:1090 src/view/AccountPanel.cpp:974
msgid "Are you sure want to delete " msgid "Are you sure want to delete "
msgstr "" msgstr ""
#: src/view/grid/GridAccount.cpp:859 #: src/view/grid/GridAccount.cpp:757
msgid "Are you sure want to delete : \n" msgid "Are you sure want to delete : \n"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:367 #: src/view/ImportPanel.cpp:361
msgid "Are you sure want to integrate these operations ?" msgid "Are you sure want to integrate these operations ?"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:369 #: src/view/PreferencesPanel.cpp:470
msgid "Ascending" msgid "Ascending"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:293 #: src/view/PreferencesPanel.cpp:356
msgid "Background color" msgid "Background color"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:236 #: src/view/AccountPanel.cpp:272
msgid "Balance" msgid "Balance"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:200 #: src/view/PreferencesPanel.cpp:223
msgid "Blocked" msgid "Blocked"
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:52 src/view/GenerateDialog.cpp:61 #: src/view/UsersDialog.cpp:50 src/view/GenerateDialog.cpp:49
#: src/view/PasswordDialog.cpp:56 #: src/view/PasswordDialog.cpp:50
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/view/grid/GridAccount.cpp:1294 src/view/grid/GridAccount.cpp:1301 #: src/view/grid/GridAccount.cpp:1247 src/view/grid/GridAccount.cpp:1260
msgid "Cannot group these operations" msgid "Cannot group these operations"
msgstr "" msgstr ""
#: src/view/grid/GridAccount.cpp:1420 src/view/grid/GridAccount.cpp:1426 #: src/view/grid/GridAccount.cpp:1391 src/view/grid/GridAccount.cpp:1397
msgid "Cannot ungroup these operations" msgid "Cannot ungroup these operations"
msgstr "" msgstr ""
#: src/controller/KissCount.cpp:363 #: src/controller/KissCount.cpp:335
msgid "Car" msgid "Car"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:61 #: src/view/PreferencesPanel.cpp:48
msgid "Categories" msgid "Categories"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:81 src/view/grid/GridAccount.cpp:63 #: src/view/SearchBanner.cpp:91 src/view/grid/GridAccount.cpp:72
msgid "Category" msgid "Category"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:727 src/view/PreferencesPanel.cpp:746 #: src/view/PreferencesPanel.cpp:978 src/view/PreferencesPanel.cpp:997
msgid "Category " msgid "Category "
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:82 #: src/view/ImportPanel.cpp:71
msgid "Category name" msgid "Category name"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:78 #: src/view/PreferencesPanel.cpp:65
msgid "Change Name" msgid "Change Name"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:79 #: src/view/PreferencesPanel.cpp:66
msgid "Change Password" msgid "Change Password"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:59 #: src/view/SearchPanel.cpp:47
msgid "Change account" msgid "Change account"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:60 #: src/view/SearchPanel.cpp:48
msgid "Change category" msgid "Change category"
msgstr "" msgstr ""
#: src/view/PasswordDialog.cpp:29 #: src/view/PasswordDialog.cpp:30
msgid "Change password" msgid "Change password"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:128 #: src/view/AccountPanel.cpp:149
msgid "Check" msgid "Check"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:70 #: src/view/SearchBanner.cpp:74
msgid "Checked" msgid "Checked"
msgstr "" msgstr ""
@ -206,364 +214,383 @@ msgstr ""
msgid "Choose a database to open" msgid "Choose a database to open"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:154 #: src/view/SearchPanel.cpp:144
msgid "Choose a new account" msgid "Choose a new account"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:196 #: src/view/SearchPanel.cpp:184
msgid "Choose a new category" msgid "Choose a new category"
msgstr "" msgstr ""
#: src/view/PasswordDialog.cpp:46 #: src/view/PasswordDialog.cpp:41
msgid "Confirm password " msgid "Confirm password"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:142 src/view/AccountPanel.cpp:122 #: src/view/StatsPanel.cpp:158 src/view/AccountPanel.cpp:98
msgid "Cost repartition" msgid "Cost repartition"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:187 src/view/ImportPanel.cpp:217 #: src/view/ImportPanel.cpp:181 src/view/ImportPanel.cpp:211
#: src/view/ImportPanel.cpp:260 src/view/ImportPanel.cpp:269 #: src/view/ImportPanel.cpp:255 src/view/ImportPanel.cpp:264
#: src/view/ImportPanel.cpp:297 src/view/ImportPanel.cpp:315 #: src/view/ImportPanel.cpp:291 src/view/ImportPanel.cpp:309
msgid "Create one" msgid "Create one"
msgstr "" msgstr ""
#: src/view/grid/GridAccount.cpp:63 #: src/view/grid/GridAccount.cpp:72
msgid "Credit" msgid "Credit"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:234 #: src/view/AccountPanel.cpp:268
msgid "Cur Credit" msgid "Cur Credit"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:235 #: src/view/AccountPanel.cpp:269
msgid "Cur Debit" msgid "Cur Debit"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:114 #: src/view/AccountPanel.cpp:473
msgid "Current value" msgid "Current value"
msgstr "" msgstr ""
#: src/view/grid/GridAccount.cpp:63 #: src/view/grid/GridAccount.cpp:72
msgid "Date" msgid "Date"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:41 #: src/view/SearchBanner.cpp:30
msgid "Date from" msgid "Date from"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:42 #: src/view/SearchBanner.cpp:31
msgid "Date to" msgid "Date to"
msgstr "" msgstr ""
#: src/view/grid/GridAccount.cpp:63 #: src/view/grid/GridAccount.cpp:72
msgid "Debit" msgid "Debit"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:198 #: src/view/PreferencesPanel.cpp:221
msgid "Default" msgid "Default"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:201 src/view/PreferencesPanel.cpp:296 #: src/view/PreferencesPanel.cpp:224 src/view/PreferencesPanel.cpp:359
#: src/view/AccountPanel.cpp:733 #: src/view/AccountPanel.cpp:832
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:370 #: src/view/PreferencesPanel.cpp:471
msgid "Descending" msgid "Descending"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:78 src/view/grid/GridAccount.cpp:63 #: src/view/SearchBanner.cpp:88 src/view/grid/GridAccount.cpp:72
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:238 #: src/view/SearchPanel.cpp:221
msgid "Enter a new description" msgid "Enter a new description"
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:95 src/view/UsersDialog.cpp:125 #: src/view/StatsPanel.cpp:430 src/view/UsersDialog.cpp:90
#: src/view/SearchBanner.cpp:140 src/view/SearchBanner.cpp:150 #: src/view/UsersDialog.cpp:120 src/view/SearchBanner.cpp:149
#: src/view/SearchBanner.cpp:163 src/view/SearchBanner.cpp:172 #: src/view/SearchBanner.cpp:159 src/view/SearchBanner.cpp:172
#: src/view/PreferencesPanel.cpp:436 src/view/PreferencesPanel.cpp:496 #: src/view/SearchBanner.cpp:181 src/view/ImportPanel.cpp:170
#: src/view/PreferencesPanel.cpp:516 src/view/PreferencesPanel.cpp:727 #: src/view/ExportPanel.cpp:118 src/view/ExportPanel.cpp:131
#: src/view/PreferencesPanel.cpp:746 src/view/PreferencesPanel.cpp:784 #: src/view/ExportPanel.cpp:138 src/view/PreferencesPanel.cpp:585
#: src/view/PreferencesPanel.cpp:790 src/view/PasswordDialog.cpp:72 #: src/view/PreferencesPanel.cpp:826 src/view/PreferencesPanel.cpp:846
#: src/view/PasswordDialog.cpp:78 src/view/AccountPanel.cpp:870 #: src/view/PreferencesPanel.cpp:978 src/view/PreferencesPanel.cpp:997
#: src/view/grid/GridAccount.cpp:1294 src/view/grid/GridAccount.cpp:1301 #: src/view/PreferencesPanel.cpp:1032 src/view/PreferencesPanel.cpp:1038
#: src/view/grid/GridAccount.cpp:1420 src/view/grid/GridAccount.cpp:1426 #: src/view/PreferencesPanel.cpp:1078 src/view/PasswordDialog.cpp:64
#: src/view/grid/wxGridCellFormulaEditor.cpp:69 src/model/Database.cpp:45 #: src/view/PasswordDialog.cpp:70 src/view/AccountPanel.cpp:970
#: src/model/Database.cpp:52 src/model/Database.cpp:70 #: src/view/grid/GridAccount.cpp:1247 src/view/grid/GridAccount.cpp:1260
#: src/model/Database.cpp:106 src/model/Database.cpp:112 #: src/view/grid/GridAccount.cpp:1391 src/view/grid/GridAccount.cpp:1397
#: src/model/Database.cpp:118 src/model/Database.cpp:126 #: src/view/grid/FormulaDelegate.cpp:59 src/model/Database.cpp:57
#: src/model/Database.cpp:147 src/model/Database_Update.cpp:23 #: src/model/Database.cpp:65 src/model/Database.cpp:84
#: src/model/Database.cpp:112 src/model/Database.cpp:118
#: src/model/Database.cpp:124 src/model/Database.cpp:134
#: src/model/Database.cpp:154 src/model/Database.cpp:604
#: src/model/Database.cpp:786 src/model/Database.cpp:928
#: src/model/DatabaseUpdate.cpp:31
msgid "Error" msgid "Error"
msgstr "" msgstr ""
#: src/model/Database.cpp:147 #: src/model/Database.cpp:154
msgid "Error creating original database" msgid "Error creating original database"
msgstr "" msgstr ""
#: src/view/ExportPanel.cpp:55 src/view/ExportPanel.cpp:89 #: src/view/ExportPanel.cpp:47 src/view/ExportPanel.cpp:81
msgid "Export" msgid "Export"
msgstr "" msgstr ""
#: src/view/ExportPanel.cpp:146 #: src/view/ExportPanel.cpp:138
msgid "Failed to save operations" msgid "Failed to save operations"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:73 #: src/view/ImportPanel.cpp:64
msgid "File account" msgid "File account"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:81 #: src/view/ImportPanel.cpp:71
msgid "File category" msgid "File category"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:115 #: src/view/AccountPanel.cpp:474
msgid "Final value" msgid "Final value"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:70 src/view/grid/GridAccount.cpp:340 #: src/view/SearchBanner.cpp:70 src/view/grid/GridAccount.cpp:342
#: src/controller/KissCount.cpp:363 #: src/controller/KissCount.cpp:335
msgid "Fix" msgid "Fix"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:295 #: src/view/PreferencesPanel.cpp:358
msgid "Font" msgid "Font"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:294 #: src/view/PreferencesPanel.cpp:357
msgid "Foreground color" msgid "Foreground color"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:65 #: src/view/StatsPanel.cpp:71
msgid "From" msgid "From"
msgstr "" msgstr ""
#: src/view/GenerateDialog.cpp:46 #: src/view/GenerateDialog.cpp:36
msgid "From " msgid "From "
msgstr "" msgstr ""
#: src/view/GenerateDialog.cpp:31 src/view/AccountPanel.cpp:730 #: src/view/GenerateDialog.cpp:33 src/view/AccountPanel.cpp:829
msgid "Generate month" msgid "Generate month"
msgstr "" msgstr ""
#: src/model/import/GrisbiImportEngine.cpp:201 #: src/model/import/GrisbiImportEngine.cpp:166
msgid "Grisbi files (*.gsb)|*.gsb" msgid "Grisbi files (*.gsb)"
msgstr "" msgstr ""
#: src/controller/KissCount.cpp:363 #: src/controller/KissCount.cpp:335
msgid "Groceries" msgid "Groceries"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:134 #: src/view/AccountPanel.cpp:167
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: src/controller/KissCount.cpp:363 #: src/view/PreferencesPanel.cpp:225
msgid "Hidden"
msgstr ""
#: src/controller/KissCount.cpp:335
msgid "Hobbies" msgid "Hobbies"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:123 #: src/view/ImportPanel.cpp:121
msgid "Import" msgid "Import"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:113 #: src/view/AccountPanel.cpp:472
msgid "Initial value" msgid "Initial value"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:57 #: src/view/ImportPanel.cpp:47
msgid "Integrate operations" msgid "Integrate operations"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:75 #: src/view/ImportPanel.cpp:64
msgid "Internal account" msgid "Internal account"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:83 #: src/view/ImportPanel.cpp:71
msgid "Internal category" msgid "Internal category"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:150 #: src/view/SearchBanner.cpp:159
msgid "Invalid amount from" msgid "Invalid amount from"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:172 #: src/view/SearchBanner.cpp:181
msgid "Invalid amount range" msgid "Invalid amount range"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:163 #: src/view/SearchBanner.cpp:172
msgid "Invalid amount to" msgid "Invalid amount to"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:140 #: src/view/SearchBanner.cpp:149
msgid "Invalid date range" msgid "Invalid date range"
msgstr "" msgstr ""
#: src/view/grid/wxGridCellFormulaEditor.cpp:69 #: src/view/grid/FormulaDelegate.cpp:59
msgid "Invalid formula !" msgid "Invalid formula !"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:784 #: src/view/PreferencesPanel.cpp:1032
msgid "Invalid name" msgid "Invalid name !"
msgstr "" msgstr ""
#: src/view/PasswordDialog.cpp:72 #: src/view/PasswordDialog.cpp:64
msgid "Invalid old password" msgid "Invalid old password"
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:95 #: src/view/UsersDialog.cpp:90
msgid "Invalid password" msgid "Invalid password"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:403 #: src/view/StatsPanel.cpp:430
msgid "Invalide date range" msgid "Invalide date range"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:436 #: src/view/PreferencesPanel.cpp:585
msgid "It must be at least one account !" msgid "It must be at least one account !"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:870 #: src/view/AccountPanel.cpp:970
msgid "It must be at least one month !" msgid "It must be at least one month !"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:80 #: src/view/PreferencesPanel.cpp:67
msgid "Kill me" msgid "Kill me"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:403 src/view/PreferencesPanel.cpp:824 #: src/view/SearchPanel.cpp:104 src/view/SearchPanel.cpp:106
#: src/view/PreferencesPanel.cpp:827 src/model/Database_Update.cpp:140 #: src/view/SearchPanel.cpp:109 src/view/ExportPanel.cpp:98
#: src/view/ExportPanel.cpp:100 src/view/ExportPanel.cpp:103
#: src/view/ExportPanel.cpp:136
msgid "KissCount" msgid "KissCount"
msgstr "" msgstr ""
#: src/view/ExportPanel.cpp:152 #: src/view/ExportPanel.cpp:144
msgid "KissCount - Export" msgid "KissCount - Export"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:128 #: src/view/ImportPanel.cpp:126
msgid "KissCount - Import" msgid "KissCount - Import"
msgstr "" msgstr ""
#: src/model/import/XMLImportEngine.cpp:268 #: src/model/export/XMLExportEngine.cpp:34
msgid "KissCount xml files (*.xml)|*.xml" msgid "KissCount XML files (*.xml)"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:62 #: src/model/import/XMLImportEngine.cpp:32
msgid "KissCount xml files (*.xml)"
msgstr ""
#: src/view/PreferencesPanel.cpp:49
msgid "Language" msgid "Language"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:827 #: src/view/PreferencesPanel.cpp:1078
msgid "Language not changed" msgid "Language not changed"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:824 #: src/view/PreferencesPanel.cpp:1075
msgid "Language successfully changed, please go to another panel" msgid "Language successfully changed, please go to another panel"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:54 #: src/view/ImportPanel.cpp:43
msgid "Load operations" msgid "Load operations"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:129 #: src/view/AccountPanel.cpp:145
msgid "Mode" msgid "Mode"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:72 src/view/PreferencesPanel.cpp:196 #: src/view/StatsPanel.cpp:338
#: src/view/PreferencesPanel.cpp:292 msgid "Months"
msgstr ""
#: src/view/PreferencesPanel.cpp:59 src/view/PreferencesPanel.cpp:219
#: src/view/PreferencesPanel.cpp:355
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:796 #: src/view/PreferencesPanel.cpp:1044
msgid "Name changed" msgid "Name changed"
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:53 src/view/UsersDialog.cpp:114 #: src/view/UsersDialog.cpp:51 src/view/UsersDialog.cpp:111
msgid "New User" msgid "New User"
msgstr "" msgstr ""
#: src/view/PasswordDialog.cpp:41 #: src/view/PasswordDialog.cpp:37
msgid "New password " msgid "New password"
msgstr "" msgstr ""
#: src/model/Database.cpp:91 #: src/model/Database.cpp:101
msgid "" msgid ""
"No database found, would you like to create a new one ?\n" "No database found, would you like to create a new one ?\n"
"\n" "\n"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:119 src/view/ExportPanel.cpp:111 #: src/view/SearchPanel.cpp:109 src/view/ExportPanel.cpp:103
msgid "No entry found" msgid "No entry found"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:351 #: src/view/ImportPanel.cpp:345
msgid "No operation found into this file" msgid "No operation found into this file"
msgstr "" msgstr ""
#: src/view/ExportPanel.cpp:124 #: src/view/ExportPanel.cpp:118
msgid "No operation to save" msgid "No operation to save"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:117 src/view/SearchBanner.cpp:70 #: src/view/StatsPanel.cpp:134 src/view/SearchBanner.cpp:72
#: src/view/AccountPanel.cpp:237 #: src/view/AccountPanel.cpp:273
msgid "Non fix" msgid "Non fix"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:149 src/view/SearchPanel.cpp:191 #: src/view/SearchPanel.cpp:140 src/view/SearchPanel.cpp:180
#: src/view/PreferencesPanel.cpp:441 src/view/PreferencesPanel.cpp:702 #: src/view/PreferencesPanel.cpp:601 src/view/PreferencesPanel.cpp:676
msgid "None" msgid "None"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:70 #: src/view/SearchBanner.cpp:76
msgid "Not checked" msgid "Not checked"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:197 #: src/view/PreferencesPanel.cpp:220
msgid "Number" msgid "Number"
msgstr "" msgstr ""
#: src/model/import/OFXImportEngine.cpp:135 #: src/model/import/OFXImportEngine.cpp:140
msgid "OFX files (*.ofx)|*.ofx" msgid "OFX files (*.ofx)"
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:51 src/view/GenerateDialog.cpp:60 #: src/view/UsersDialog.cpp:49 src/view/GenerateDialog.cpp:48
#: src/view/PasswordDialog.cpp:55 #: src/view/PasswordDialog.cpp:49
msgid "OK" msgid "OK"
msgstr "" msgstr ""
#: src/view/PasswordDialog.cpp:36 #: src/view/PasswordDialog.cpp:33
msgid "Old password " msgid "Old password"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:63 #: src/view/PreferencesPanel.cpp:50
msgid "Operation order" msgid "Operation order"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:82 src/view/AccountPanel.cpp:186 #: src/view/SearchBanner.cpp:92 src/view/AccountPanel.cpp:227
msgid "Operations" msgid "Operations"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:421 #: src/view/ImportPanel.cpp:414
msgid "Operations successfully imported" msgid "Operations successfully imported"
msgstr "" msgstr ""
#: src/view/ExportPanel.cpp:144 #: src/view/ExportPanel.cpp:136
msgid "Operations successfuly saved" msgid "Operations successfuly saved"
msgstr "" msgstr ""
#: src/controller/KissCount.cpp:364 #: src/controller/KissCount.cpp:336
msgid "Other" msgid "Other"
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:45 #: src/view/UsersDialog.cpp:44
msgid "Password " msgid "Password "
msgstr "" msgstr ""
#: src/view/PasswordDialog.cpp:84 #: src/view/PasswordDialog.cpp:76
msgid "Password changed" msgid "Password changed"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:249 #: src/view/wxUI.cpp:287
msgid "" msgid ""
"Personal accounting software\n" "Personal accounting software\n"
"\n" "\n"
@ -571,188 +598,180 @@ msgid ""
"\n" "\n"
"Licenced under GNU GPL v3\n" "Licenced under GNU GPL v3\n"
"\n" "\n"
"Copyright (C) 2010-2011 Grégory Soutadé" "Copyright (C) 2010-2012 Grégory Soutadé"
msgstr "" msgstr ""
#: src/view/PasswordDialog.cpp:78 #: src/view/PasswordDialog.cpp:70
msgid "Please retype new password" msgid "Please retype new password"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:184 src/view/PreferencesPanel.cpp:798 #: src/view/PreferencesPanel.cpp:205 src/view/PreferencesPanel.cpp:1083
#: src/view/PreferencesPanel.cpp:832
msgid "Preferences" msgid "Preferences"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:256 #: src/view/wxUI.cpp:292
msgid "Quit KissCount ?" msgid "Quit KissCount ?"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:128 #: src/view/AccountPanel.cpp:148
msgid "Real" msgid "Real"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:61 #: src/view/SearchPanel.cpp:49
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: src/view/ExportPanel.cpp:128 #: src/view/ExportPanel.cpp:122
msgid "Save as" msgid "Save as"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:60 #: src/view/ImportPanel.cpp:51
msgid "Save import patterns" msgid "Save import patterns"
msgstr "" msgstr ""
#: src/view/SearchPanel.cpp:48 src/view/SearchPanel.cpp:97 #: src/view/SearchPanel.cpp:34 src/view/SearchPanel.cpp:87
#: src/view/SearchPanel.cpp:254 src/view/ExportPanel.cpp:44 #: src/view/SearchPanel.cpp:231 src/view/ExportPanel.cpp:34
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:134 src/view/AccountPanel.cpp:95 #: src/view/PreferencesPanel.cpp:51
msgid "Serie 1"
msgstr ""
#: src/view/PreferencesPanel.cpp:64
msgid "Shared with" msgid "Shared with"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:172 src/view/StatsPanel.cpp:384 #: src/view/StatsPanel.cpp:212 src/view/StatsPanel.cpp:415
msgid "Statistics" msgid "Statistics"
msgstr "" msgstr ""
#: src/view/StatsPanel.cpp:70 #: src/view/StatsPanel.cpp:76
msgid "To" msgid "To"
msgstr "" msgstr ""
#: src/view/GenerateDialog.cpp:53 #: src/view/AccountPanel.cpp:247 src/view/AccountPanel.cpp:270
msgid "To "
msgstr ""
#: src/view/AccountPanel.cpp:210
msgid "Total Credit" msgid "Total Credit"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:211 #: src/view/AccountPanel.cpp:248 src/view/AccountPanel.cpp:271
msgid "Total Debit" msgid "Total Debit"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:135 #: src/view/AccountPanel.cpp:168
msgid "UnGroup" msgid "UnGroup"
msgstr "" msgstr ""
#: src/model/Database.cpp:112 src/model/Database.cpp:118 #: src/model/Database.cpp:118 src/model/Database.cpp:124
msgid "Unable to Create " msgid "Unable to Create "
msgstr "" msgstr ""
#: src/model/Database.cpp:45 src/model/Database.cpp:52 #: src/model/Database.cpp:57 src/model/Database.cpp:65
#: src/model/Database.cpp:70 src/model/Database.cpp:126 #: src/model/Database.cpp:84 src/model/Database.cpp:134
msgid "Unable to open Database" msgid "Unable to open Database"
msgstr "" msgstr ""
#: src/controller/KissCount.cpp:364 #: src/controller/KissCount.cpp:336
msgid "Unexpected" msgid "Unexpected"
msgstr "" msgstr ""
#: src/view/SearchBanner.cpp:66 src/view/SearchBanner.cpp:74 #: src/view/SearchBanner.cpp:61 src/view/SearchBanner.cpp:80
#: src/view/AccountPanel.cpp:529 src/view/AccountPanel.cpp:565 #: src/view/AccountPanel.cpp:619 src/view/AccountPanel.cpp:655
#: src/view/AccountPanel.cpp:603 src/model/User.cpp:59 src/model/User.cpp:79 #: src/view/AccountPanel.cpp:693 src/model/User.cpp:62 src/model/User.cpp:80
#: src/model/User.cpp:127 #: src/model/User.cpp:158
msgid "Unknown" msgid "Unknown"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:42 #: src/view/ImportPanel.cpp:32
msgid "Unresolved accounts" msgid "Unresolved accounts"
msgstr "" msgstr ""
#: src/view/ImportPanel.cpp:43 #: src/view/ImportPanel.cpp:33
msgid "Unresolved categories" msgid "Unresolved categories"
msgstr "" msgstr ""
#: src/view/AccountPanel.cpp:136 #: src/model/Database.cpp:604 src/model/Database.cpp:786
#: src/model/Database.cpp:928
msgid "Update failed !\n"
msgstr ""
#: src/view/AccountPanel.cpp:169
msgid "Update next months" msgid "Update next months"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:59 #: src/view/PreferencesPanel.cpp:46
msgid "User" msgid "User"
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:40 src/view/UsersDialog.cpp:125 #: src/view/UsersDialog.cpp:40 src/view/UsersDialog.cpp:120
#: src/view/PreferencesPanel.cpp:790 #: src/view/PreferencesPanel.cpp:1038
msgid "User " msgid "User "
msgstr "" msgstr ""
#: src/view/UsersDialog.cpp:31 #: src/view/UsersDialog.cpp:35
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:199 src/view/AccountPanel.cpp:128 #: src/view/PreferencesPanel.cpp:222 src/view/AccountPanel.cpp:147
msgid "Virtual" msgid "Virtual"
msgstr "" msgstr ""
#: src/view/grid/GridAccount.cpp:1071 #: src/view/grid/GridAccount.cpp:1053
msgid "Warning" msgid "Warning"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:446 #: src/view/PreferencesPanel.cpp:606
msgid "Wich account will replace this one ?" msgid "Wich account will replace this one ?"
msgstr "" msgstr ""
#: src/view/PreferencesPanel.cpp:707 #: src/view/PreferencesPanel.cpp:682
msgid "Wich category will replace this one ?" msgid "Wich category will replace this one ?"
msgstr "" msgstr ""
#: src/model/export/XMLExportEngine.cpp:29 #: src/view/grid/GridAccount.cpp:1053
msgid "XML files (*.xml)|*.xml"
msgstr ""
#: src/view/grid/GridAccount.cpp:1071
msgid "You made a debit on a blocked account" msgid "You made a debit on a blocked account"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:125 #: src/view/wxUI.cpp:157
msgid "april" msgid "april"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:129 #: src/view/wxUI.cpp:161
msgid "august" msgid "august"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:133 #: src/view/wxUI.cpp:165
msgid "december" msgid "december"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:123 #: src/view/wxUI.cpp:155
msgid "february" msgid "february"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:122 #: src/view/wxUI.cpp:154
msgid "january" msgid "january"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:128 #: src/view/wxUI.cpp:160
msgid "july" msgid "july"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:127 #: src/view/wxUI.cpp:159
msgid "june" msgid "june"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:124 #: src/view/wxUI.cpp:156
msgid "march" msgid "march"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:126 #: src/view/wxUI.cpp:158
msgid "may" msgid "may"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:132 #: src/view/wxUI.cpp:164
msgid "november" msgid "november"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:131 #: src/view/wxUI.cpp:163
msgid "october" msgid "october"
msgstr "" msgstr ""
#: src/view/wxUI.cpp:130 #: src/view/wxUI.cpp:162
msgid "september" msgid "september"
msgstr "" msgstr ""

View File

@ -31,11 +31,10 @@ std::vector<ExportEngine*> * KissCount::_exportEngines;
KissCount::KissCount(int argc, char** argv) : QApplication(argc, argv), _user(0) KissCount::KissCount(int argc, char** argv) : QApplication(argc, argv), _user(0)
{ {
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
_wxUI = new wxUI(this, "KissCount"); _wxUI = new wxUI(this, "KissCount");
//_wxUI->SetLanguage(wxLocale::GetSystemLanguage());
_wxUI->showMaximized(); _wxUI->showMaximized();
_wxUI->setDisabled(true); _wxUI->setDisabled(true);

View File

@ -1065,10 +1065,10 @@ void PreferencesPanel::OnOperationOrderChange(int index)
void PreferencesPanel::OnLanguageChange(int index) void PreferencesPanel::OnLanguageChange(int index)
{ {
SupportedLanguages::wxLanguage language = SupportedLanguages::languages[index].language; int language = SupportedLanguages::languages[index].language;
QString name_lang = SupportedLanguages::languages[index].name; QString name_lang = SupportedLanguages::languages[index].name;
if (_wxUI->SetLanguage(name_lang) || language == SupportedLanguages::wxLANGUAGE_ENGLISH) if (_wxUI->SetLanguage(name_lang) || language == SupportedLanguages::English)
{ {
_wxUI->NeedReload(); _wxUI->NeedReload();
_kiss->SetLanguage(name_lang); _kiss->SetLanguage(name_lang);

View File

@ -23,17 +23,18 @@
namespace SupportedLanguages { namespace SupportedLanguages {
#define ICONS_PATH RESSOURCES_ROOT "icons/" #define ICONS_PATH RESSOURCES_ROOT "icons/"
enum wxLanguage {wxLANGUAGE_ENGLISH, wxLANGUAGE_FRENCH, NB_SUPPORTED_LANGUAGES} ; enum Language {English, French, NB_SUPPORTED_LANGUAGES} ;
typedef struct { typedef struct {
QString name; QString name;
QString icon; QString icon;
wxLanguage language; QLocale::Language language;
QString filename;
} language ; } language ;
static const language languages[NB_SUPPORTED_LANGUAGES] = { static const language languages[NB_SUPPORTED_LANGUAGES] = {
{ "English", ICONS_PATH "/United Kingdom.png", wxLANGUAGE_ENGLISH}, { "English", ICONS_PATH "/United Kingdom.png", QLocale::English, "english"},
{ "Français",ICONS_PATH "/France.png", wxLANGUAGE_FRENCH} { "Français",ICONS_PATH "/France.png", QLocale::French, "french"}
}; };
} }

View File

@ -46,11 +46,14 @@ QColor wxUI::categoryColors[MAX_CATEGORY] = {QColor(0x00, 0x45, 0x86),
QColor(0x00, 0x84, 0xD1)}; QColor(0x00, 0x84, 0xD1)};
wxUI::wxUI(KissCount* kiss, const QString& title) wxUI::wxUI(KissCount* kiss, const QString& title)
: QFrame(0), _kiss(kiss), _signalMapper(this), : QFrame(0), _language(SupportedLanguages::languages[SupportedLanguages::English].name),
_curPanel(0), _locale(0), _needReload(false) _kiss(kiss), _signalMapper(this), _curPanel(0), _locale(0),
_needReload(false)
{ {
QPushButton* button; QPushButton* button;
SetLanguage("");
setWindowTitle(title); setWindowTitle(title);
connect(&_signalMapper, SIGNAL(mapped(int)), this, SLOT(OnButtonClicked(int))); connect(&_signalMapper, SIGNAL(mapped(int)), this, SLOT(OnButtonClicked(int)));
@ -93,41 +96,60 @@ wxUI::~wxUI()
bool wxUI::SetLanguage(QString language) bool wxUI::SetLanguage(QString language)
{ {
bool res = true; bool res = true;
int i;
// if (_locale) delete _locale; if (_locale)
// _locale = 0; {
if (language == _language) return true;
}
// // load language if possible, fall back to english otherwise if (language == "")
// if(wxLocale::IsAvailable(language)) {
// { QLocale default_locale = QLocale::system();
// _locale = new wxLocale( language, wxLOCALE_CONV_ENCODING );
// #ifdef __WXGTK__ for(i=0; i<SupportedLanguages::NB_SUPPORTED_LANGUAGES; i++)
// _locale->AddCatalogLookupPathPrefix(wxT(LANG_ROOT)); {
// #endif if (default_locale.language() == SupportedLanguages::languages[i].language)
break;
}
if (i == SupportedLanguages::NB_SUPPORTED_LANGUAGES)
i = SupportedLanguages::English;
language = SupportedLanguages::languages[i].name;
}
else
{
for(i=0; i<SupportedLanguages::NB_SUPPORTED_LANGUAGES; i++)
{
if (language == SupportedLanguages::languages[i].name)
break;
}
if (i == SupportedLanguages::NB_SUPPORTED_LANGUAGES)
return false;
}
// _locale->AddCatalog(wxT("frenchpp")); if (_locale)
// _locale->AddCatalog(wxT("kisscount")); {
delete _locale;
_kiss->removeTranslator(&_translator);
}
// _language = (wxLanguage) language; if (i != SupportedLanguages::English)
// } {
if (!_translator.load(SupportedLanguages::languages[i].filename, RESSOURCES_ROOT "po"))
{
i = SupportedLanguages::English;
_translator.load(SupportedLanguages::languages[i].filename, RESSOURCES_ROOT "po");
_language = SupportedLanguages::languages[i].name;
res = false;
}
// if (_locale == 0 || !_locale->IsOk()) _kiss->installTranslator(&_translator);
// { }
// if (_locale) delete _locale;
// _locale = new wxLocale();
// #ifdef __WXGTK__ _language = SupportedLanguages::languages[i].language;
// _locale->AddCatalogLookupPathPrefix(wxT(LANG_ROOT));
// #endif
// _locale->AddCatalog(wxT("kisscount")); _locale = new QLocale(SupportedLanguages::languages[i].language);
QLocale::setDefault(*_locale);
// _language = wxLANGUAGE_ENGLISH;
// res = false;
// }
_language = language;
months[0] = _("january"); months[0] = _("january");
months[1] = _("february"); months[1] = _("february");

View File

@ -37,7 +37,8 @@ class ImportEngine;
#include <qtranslator.h> #include <qtranslator.h>
#include <qtextcodec.h> #include <qtextcodec.h>
#define _(s) QObject::trUtf8(s) #define _(s) QApplication::translate("", s)
// #define _(s) QObject::trUtf8(s)
class KissCount; class KissCount;
class KissPanel; class KissPanel;
@ -89,6 +90,7 @@ private:
std::vector<KissPanel*> _panels; std::vector<KissPanel*> _panels;
std::vector<QPushButton*> _buttons; std::vector<QPushButton*> _buttons;
QLocale *_locale; QLocale *_locale;
QTranslator _translator;
bool _needReload; bool _needReload;
void InitPanels(); void InitPanels();

View File

@ -1,3 +1,25 @@
#!/bin/bash #!/bin/bash
function check_tool()
{
which $1 > /dev/null
if [ $? == 1 ] ; then
echo "$1 is missing" ;
exit 1
fi
}
for p in find xgettext poeditor lconvert lrelease ; do
check_tool $p
done
CPP_FILE_LIST=`find src -name '*.cpp' -print` CPP_FILE_LIST=`find src -name '*.cpp' -print`
xgettext --from-code utf-8 -d kisscount -s --keyword=_ -p ./ressources/po -o kisscount.pot $CPP_FILE_LIST xgettext --from-code utf-8 -d kisscount -s --keyword=_ -p ./ressources/po -o kisscount.pot $CPP_FILE_LIST
for po in ./ressources/po/*.po ; do
ts=`echo $po | sed s/po$/ts/`
poeditor $po
echo lconvert -locations relative $po -o $ts
lconvert -locations relative $po -o $ts
lrelease $ts
rm -f $ts
done