diff --git a/deluge/ui/web/gettext.js b/deluge/ui/web/gettext.js index a1df70e81..17ee88409 100644 --- a/deluge/ui/web/gettext.js +++ b/deluge/ui/web/gettext.js @@ -23,322 +23,382 @@ GetText = { var _ = GetText.get.bind(GetText); -// deluge-menus.js:154 +// deluge-torrents.js:146 +GetText.add('#', '${_("#")}'); + +// deluge-menus.js:155 GetText.add('0', '${_("0")}'); -// deluge-menus.js:156 +// deluge-menus.js:157 GetText.add('1', '${_("1")}'); -// deluge-menus.js:102, deluge-menus.js:120 +// deluge-menus.js:103, deluge-menus.js:121 GetText.add('10 KiB/s', '${_("10 KiB/s")}'); -// deluge-menus.js:138 +// deluge-menus.js:139 GetText.add('100', '${_("100")}'); -// deluge-menus.js:158 +// deluge-menus.js:159 GetText.add('2', '${_("2")}'); -// deluge-menus.js:140 +// deluge-menus.js:141 GetText.add('200', '${_("200")}'); -// deluge-menus.js:160 +// deluge-menus.js:161 GetText.add('3', '${_("3")}'); -// deluge-menus.js:104, deluge-menus.js:122 +// deluge-menus.js:105, deluge-menus.js:123 GetText.add('30 KiB/s', '${_("30 KiB/s")}'); -// deluge-menus.js:142 +// deluge-menus.js:143 GetText.add('300', '${_("300")}'); -// deluge-menus.js:108, deluge-menus.js:126 +// deluge-menus.js:109, deluge-menus.js:127 GetText.add('300 KiB/s', '${_("300 KiB/s")}'); -// deluge-menus.js:162 +// deluge-menus.js:163 GetText.add('5', '${_("5")}'); -// deluge-menus.js:100, deluge-menus.js:118 +// deluge-menus.js:101, deluge-menus.js:119 GetText.add('5 KiB/s', '${_("5 KiB/s")}'); -// deluge-menus.js:136 +// deluge-menus.js:137 GetText.add('50', '${_("50")}'); -// deluge-menus.js:144 +// deluge-menus.js:145 GetText.add('500', '${_("500")}'); -// deluge-menus.js:106, deluge-menus.js:124 +// deluge-menus.js:107, deluge-menus.js:125 GetText.add('80 KiB/s', '${_("80 KiB/s")}'); -// deluge-bars.js:117, deluge-add.js:466, deluge-add.js:526, deluge-add.js:551, deluge-connections.js:218, deluge-connections.js:290 +// deluge-connections.js:219, deluge-connections.js:291, deluge-bars.js:118, deluge-add.js:467, deluge-add.js:527, deluge-add.js:552 GetText.add('Add', '${_("Add")}'); -// deluge-connections.js:247 +// deluge-connections.js:248 GetText.add('Add Connection', '${_("Add Connection")}'); -// deluge-add.js:386 +// deluge-add.js:387 GetText.add('Add In Paused State', '${_("Add In Paused State")}'); -// deluge-add.js:541 +// deluge-add.js:542 GetText.add('Add Torrents', '${_("Add Torrents")}'); -// deluge-add.js:462 +// deluge-add.js:463 GetText.add('Add from File', '${_("Add from File")}'); -// deluge-add.js:522 +// deluge-add.js:523 GetText.add('Add from Url', '${_("Add from Url")}'); -// deluge-add.js:304 +// deluge-torrents.js:157 +GetText.add('Added', '${_("Added")}'); + +// deluge-add.js:305 GetText.add('Allocation', '${_("Allocation")}'); -// deluge-details.js:690, deluge-preferences.js:35 +// deluge-preferences.js:40, deluge-details.js:692 GetText.add('Apply', '${_("Apply")}'); -// deluge-add.js:395 +// deluge-add.js:396 GetText.add('Apply to All', '${_("Apply to All")}'); -// deluge-details.js:636, deluge-menus.js:169 +// deluge-menus.js:170, deluge-details.js:638 GetText.add('Auto Managed', '${_("Auto Managed")}'); -// deluge-details.js:550, deluge-add.js:329 +// deluge-torrents.js:156 +GetText.add('Avail', '${_("Avail")}'); + +// deluge-preferences.js:105, deluge-add.js:330, deluge-details.js:552 GetText.add('Bandwidth', '${_("Bandwidth")}'); -// deluge-menus.js:197 +// deluge-menus.js:198 GetText.add('Bottom', '${_("Bottom")}'); -// deluge-add.js:290, deluge-add.js:448 +// deluge-add.js:291, deluge-add.js:449 GetText.add('Browse', '${_("Browse")}'); -// deluge-add.js:545 +// deluge-add.js:546 GetText.add('Cancel', '${_("Cancel")}'); -// deluge-connections.js:285, deluge-connections.js:311, deluge-preferences.js:33 +// deluge-preferences.js:48 +GetText.add('Categories', '${_("Categories")}'); + +// deluge-connections.js:286, deluge-connections.js:312, deluge-preferences.js:38 GetText.add('Close', '${_("Close")}'); -// deluge-add.js:321 +// deluge-add.js:322 GetText.add('Compact', '${_("Compact")}'); -// deluge-connections.js:148, deluge-connections.js:314 +// deluge-connections.js:149, deluge-connections.js:315 GetText.add('Connect', '${_("Connect")}'); -// deluge-connections.js:94, deluge-connections.js:145 +// deluge-connections.js:95, deluge-connections.js:146 GetText.add('Connected', '${_("Connected")}'); -// deluge-menus.js:132 +// deluge-menus.js:133 GetText.add('Connection Limit', '${_("Connection Limit")}'); -// deluge-bars.js:165, deluge-connections.js:307 +// deluge-connections.js:308, deluge-bars.js:166 GetText.add('Connection Manager', '${_("Connection Manager")}'); -// deluge-bars.js:110 +// deluge-bars.js:111 GetText.add('Create', '${_("Create")}'); -// deluge-menus.js:96 +// deluge-menus.js:97 GetText.add('D/L Speed Limit', '${_("D/L Speed Limit")}'); -// deluge-details.js:459 +// deluge-preferences.js:108 +GetText.add('Daemon', '${_("Daemon")}'); + +// deluge-details.js:461 GetText.add('Details', '${_("Details")}'); -// deluge-connections.js:146 +// deluge-connections.js:147 GetText.add('Disconnect', '${_("Disconnect")}'); -// deluge-menus.js:385 +// deluge-menus.js:386 GetText.add('Do Not Download', '${_("Do Not Download")}'); -// deluge-bars.js:152, deluge-menus.js:191 +// deluge-bars.js:153, deluge-menus.js:192 GetText.add('Down', '${_("Down")}'); -// deluge-add.js:271 +// deluge-torrents.js:152 +GetText.add('Down Speed', '${_("Down Speed")}'); + +// deluge-add.js:272 GetText.add('Download Location', '${_("Download Location")}'); -// deluge-details.js:681, deluge-menus.js:211 +// deluge-preferences.js:101 +GetText.add('Downloads', '${_("Downloads")}'); + +// deluge-torrents.js:154 +GetText.add('ETA', '${_("ETA")}'); + +// deluge-menus.js:212, deluge-details.js:683 GetText.add('Edit Trackers', '${_("Edit Trackers")}'); -// deluge-add.js:141, deluge-connections.js:60, deluge-connections.js:128, deluge-connections.js:163 +// deluge-connections.js:61, deluge-connections.js:129, deluge-connections.js:164, deluge-add.js:142 GetText.add('Error', '${_("Error")}'); -// deluge-menus.js:381 +// deluge-menus.js:382 GetText.add('Expand All', '${_("Expand All")}'); -// deluge-add.js:223, deluge-add.js:445 +// deluge-add.js:224, deluge-add.js:446 GetText.add('File', '${_("File")}'); -// deluge-details.js:475, deluge-add.js:180 +// deluge-add.js:181, deluge-details.js:477 GetText.add('Filename', '${_("Filename")}'); -// deluge-details.js:469, deluge-add.js:258 +// deluge-add.js:259, deluge-details.js:471 GetText.add('Files', '${_("Files")}'); -// deluge-bars.js:488 +// deluge-bars.js:493 GetText.add('Filters', '${_("Filters")}'); -// deluge-menus.js:223 +// deluge-menus.js:224 GetText.add('Force Recheck', '${_("Force Recheck")}'); -// deluge-add.js:315 +// deluge-add.js:316 GetText.add('Full', '${_("Full")}'); -// deluge-details.js:660, deluge-add.js:378 +// deluge-add.js:379, deluge-details.js:662 GetText.add('General', '${_("General")}'); -// deluge-bars.js:174 +// deluge-bars.js:175 GetText.add('Help', '${_("Help")}'); -// deluge-menus.js:395 +// deluge-menus.js:396 GetText.add('High Priority', '${_("High Priority")}'); -// deluge-menus.js:400 +// deluge-menus.js:401 GetText.add('Highest Priority', '${_("Highest Priority")}'); -// deluge-connections.js:255 +// deluge-connections.js:256 GetText.add('Host', '${_("Host")}'); -// deluge-add.js:236 +// deluge-add.js:237 GetText.add('Infohash', '${_("Infohash")}'); -// deluge-details.js:84, deluge-details.js:146 +// deluge-preferences.js:106 +GetText.add('Interface', '${_("Interface")}'); + +// deluge-details.js:85, deluge-details.js:148 GetText.add('Loading', '${_("Loading")}'); -// deluge-login.js:90, deluge-login.js:94 +// deluge-login.js:91, deluge-login.js:95 GetText.add('Login', '${_("Login")}'); -// deluge-login.js:35 +// deluge-login.js:36 GetText.add('Login Failed', '${_("Login Failed")}'); -// deluge-bars.js:182 +// deluge-bars.js:183 GetText.add('Logout', '${_("Logout")}'); -// deluge-details.js:594, deluge-add.js:356 +// deluge-add.js:357, deluge-details.js:596 GetText.add('Max Connections', '${_("Max Connections")}'); -// deluge-add.js:336 +// deluge-add.js:337 GetText.add('Max Down Speed', '${_("Max Down Speed")}'); -// deluge-details.js:558 +// deluge-details.js:560 GetText.add('Max Download Speed', '${_("Max Download Speed")}'); -// deluge-add.js:346 +// deluge-add.js:347 GetText.add('Max Up Speed', '${_("Max Up Speed")}'); -// deluge-details.js:609, deluge-add.js:366 +// deluge-add.js:367, deluge-details.js:611 GetText.add('Max Upload Slots', '${_("Max Upload Slots")}'); -// deluge-details.js:576 +// deluge-details.js:578 GetText.add('Max Upload Speed', '${_("Max Upload Speed")}'); -// deluge-details.js:651 +// deluge-details.js:653 GetText.add('Move Completed', '${_("Move Completed")}'); -// deluge-menus.js:229 +// deluge-menus.js:230 GetText.add('Move Storage', '${_("Move Storage")}'); -// deluge-menus.js:390 +// deluge-torrents.js:147 +GetText.add('Name', '${_("Name")}'); + +// deluge-preferences.js:104 +GetText.add('Network', '${_("Network")}'); + +// deluge-menus.js:391 GetText.add('Normal Priority', '${_("Normal Priority")}'); -// deluge-bars.js:332 +// deluge-bars.js:333 GetText.add('Not Connected', '${_("Not Connected")}'); -// deluge-add.js:142 +// deluge-add.js:143 GetText.add('Not a valid torrent', '${_("Not a valid torrent")}'); -// deluge-preferences.js:37 +// deluge-preferences.js:111 +GetText.add('Notification', '${_("Notification")}'); + +// deluge-preferences.js:42 GetText.add('Ok', '${_("Ok")}'); -// deluge-details.js:533, deluge-add.js:262, deluge-menus.js:92 +// deluge-add.js:263, deluge-menus.js:93, deluge-details.js:535 GetText.add('Options', '${_("Options")}'); -// deluge-menus.js:276, deluge-menus.js:323, deluge-menus.js:370 +// deluge-preferences.js:107, deluge-menus.js:277, deluge-menus.js:324, deluge-menus.js:371 GetText.add('Other', '${_("Other")}'); -// deluge-connections.js:277, deluge-login.js:66 +// deluge-connections.js:278, deluge-login.js:67 GetText.add('Password', '${_("Password")}'); -// deluge-bars.js:131, deluge-menus.js:80 +// deluge-bars.js:132, deluge-menus.js:81 GetText.add('Pause', '${_("Pause")}'); -// deluge-details.js:510 +// deluge-details.js:512, deluge-torrents.js:151 GetText.add('Peers', '${_("Peers")}'); -// deluge-connections.js:261 +// deluge-preferences.js:112 +GetText.add('Plugins', '${_("Plugins")}'); + +// deluge-connections.js:262 GetText.add('Port', '${_("Port")}'); -// deluge-bars.js:158, deluge-preferences.js:31 +// deluge-bars.js:159, deluge-preferences.js:36 GetText.add('Preferences', '${_("Preferences")}'); -// deluge-details.js:672 +// deluge-details.js:674 GetText.add('Prioritize First/Last', '${_("Prioritize First/Last")}'); -// deluge-add.js:391 +// deluge-add.js:392 GetText.add('Prioritize First/Last Piece', '${_("Prioritize First/Last Piece")}'); -// deluge-details.js:489 +// deluge-details.js:491 GetText.add('Priority', '${_("Priority")}'); -// deluge-details.js:667 +// deluge-details.js:669 GetText.add('Private', '${_("Private")}'); -// deluge-details.js:484 +// deluge-details.js:486, deluge-torrents.js:149 GetText.add('Progress', '${_("Progress")}'); -// deluge-details.js:629, deluge-menus.js:174 +// deluge-preferences.js:110 +GetText.add('Proxy', '${_("Proxy")}'); + +// deluge-preferences.js:109, deluge-menus.js:175, deluge-details.js:631 GetText.add('Queue', '${_("Queue")}'); -// deluge-bars.js:124, deluge-add.js:242, deluge-connections.js:224 +// deluge-torrents.js:155 +GetText.add('Ratio', '${_("Ratio")}'); + +// deluge-connections.js:225, deluge-bars.js:125, deluge-add.js:243 GetText.add('Remove', '${_("Remove")}'); -// deluge-menus.js:217 +// deluge-menus.js:218 GetText.add('Remove Torrent', '${_("Remove Torrent")}'); -// deluge-details.js:646 +// deluge-details.js:648 GetText.add('Remove at ratio', '${_("Remove at ratio")}'); -// deluge-bars.js:138, deluge-menus.js:86 +// deluge-bars.js:139, deluge-menus.js:87 GetText.add('Resume', '${_("Resume")}'); -// deluge-add.js:399 +// deluge-add.js:400 GetText.add('Revert to Defaults', '${_("Revert to Defaults")}'); -// deluge-add.js:444 +// deluge-torrents.js:150 +GetText.add('Seeders', '${_("Seeders")}'); + +// deluge-add.js:445 GetText.add('Select a torrent', '${_("Select a torrent")}'); -// deluge-details.js:479, deluge-add.js:184 +// deluge-add.js:185, deluge-details.js:481, deluge-torrents.js:148 GetText.add('Size', '${_("Size")}'); -// deluge-details.js:450 +// deluge-bars.js:339 +GetText.add('State', '${_("State")}'); + +// deluge-details.js:452 GetText.add('Status', '${_("Status")}'); -// deluge-connections.js:230 +// deluge-connections.js:231 GetText.add('Stop Daemon', '${_("Stop Daemon")}'); -// deluge-details.js:641 +// deluge-details.js:643 GetText.add('Stop seed at ratio', '${_("Stop seed at ratio")}'); -// deluge-menus.js:179 +// deluge-menus.js:180 GetText.add('Top', '${_("Top")}'); -// deluge-menus.js:114 +// deluge-torrents.js:158 +GetText.add('Tracker', '${_("Tracker")}'); + +// deluge-bars.js:340 +GetText.add('Tracker Host', '${_("Tracker Host")}'); + +// deluge-menus.js:115 GetText.add('U/L Speed Limit', '${_("U/L Speed Limit")}'); -// deluge-menus.js:110, deluge-menus.js:128, deluge-menus.js:146, deluge-menus.js:164, deluge-menus.js:270, deluge-menus.js:317, deluge-menus.js:364 +// deluge-menus.js:111, deluge-menus.js:129, deluge-menus.js:147, deluge-menus.js:165, deluge-menus.js:271, deluge-menus.js:318, deluge-menus.js:365 GetText.add('Unlimited', '${_("Unlimited")}'); -// deluge-bars.js:145, deluge-menus.js:185 +// deluge-bars.js:146, deluge-menus.js:186 GetText.add('Up', '${_("Up")}'); -// deluge-menus.js:205 +// deluge-torrents.js:153 +GetText.add('Up Speed', '${_("Up Speed")}'); + +// deluge-menus.js:206 GetText.add('Update Tracker', '${_("Update Tracker")}'); -// deluge-menus.js:150 +// deluge-menus.js:151 GetText.add('Upload Slot Limit', '${_("Upload Slot Limit")}'); -// deluge-add.js:419 +// deluge-add.js:420 GetText.add('Uploading your torrent...', '${_("Uploading your torrent...")}'); -// deluge-add.js:229, deluge-add.js:499 +// deluge-add.js:230, deluge-add.js:500 GetText.add('Url', '${_("Url")}'); -// deluge-connections.js:271 +// deluge-connections.js:272 GetText.add('Username', '${_("Username")}'); -// deluge-login.js:36 +// deluge-login.js:37 GetText.add('You entered an incorrect password', '${_("You entered an incorrect password")}'); diff --git a/deluge/ui/web/js/deluge-bars.js b/deluge/ui/web/js/deluge-bars.js index 89d44d4b6..837761ac9 100644 --- a/deluge/ui/web/js/deluge-bars.js +++ b/deluge/ui/web/js/deluge-bars.js @@ -334,6 +334,10 @@ Deluge.StatusBar.Bar = new Ext.StatusBar({ listeners: {'render': {scope: Deluge.StatusBar, fn: Deluge.StatusBar.onRender}} }); + +// These are just so gen_gettext.js pick up the strings +// _('State') +// _('Tracker Host') Deluge.SideBar = { panels: new Hash(), @@ -428,7 +432,7 @@ Deluge.SideBar = { var panel = new Ext.grid.GridPanel({ id: filter + '-panel', store: store, - title: title, + title: _(title), columns: [ {id: 'filter', sortable: false, renderer: this.renderer, dataIndex: 'filter'} ], diff --git a/deluge/ui/web/js/deluge-details.js b/deluge/ui/web/js/deluge-details.js index f69cd288c..3776e1196 100644 --- a/deluge/ui/web/js/deluge-details.js +++ b/deluge/ui/web/js/deluge-details.js @@ -105,7 +105,8 @@ Deluge.Details.Status = { active_time: ftime(status.active_time), seeding_time: ftime(status.seeding_time), seed_rank: status.seed_rank, - auto_managed: 'False' + auto_managed: 'False', + time_added: fdate(status.time_added) } if (status.is_auto_managed) {data.auto_managed = 'True'} this.fields.each(function(value, key) { diff --git a/deluge/ui/web/js/deluge-preferences.js b/deluge/ui/web/js/deluge-preferences.js index db9b9e353..45d9cfe2a 100644 --- a/deluge/ui/web/js/deluge-preferences.js +++ b/deluge/ui/web/js/deluge-preferences.js @@ -98,15 +98,15 @@ Copyright: Deluge.Preferences = new PreferencesWindow(); })(); -Deluge.Preferences.addPage('Downloads', { +Deluge.Preferences.addPage(_('Downloads'), { }); -Deluge.Preferences.addPage('Network', {}); -Deluge.Preferences.addPage('Bandwidth', {}); -Deluge.Preferences.addPage('Interface', {}); -Deluge.Preferences.addPage('Other', {}); -Deluge.Preferences.addPage('Daemon', {}); -Deluge.Preferences.addPage('Queue', {}); -Deluge.Preferences.addPage('Proxy', {}); -Deluge.Preferences.addPage('Notification', {}); -Deluge.Preferences.addPage('Plugins', {}); \ No newline at end of file +Deluge.Preferences.addPage(_('Network'), {}); +Deluge.Preferences.addPage(_('Bandwidth'), {}); +Deluge.Preferences.addPage(_('Interface'), {}); +Deluge.Preferences.addPage(_('Other'), {}); +Deluge.Preferences.addPage(_('Daemon'), {}); +Deluge.Preferences.addPage(_('Queue'), {}); +Deluge.Preferences.addPage(_('Proxy'), {}); +Deluge.Preferences.addPage(_('Notification'), {}); +Deluge.Preferences.addPage(_('Plugins'), {}); \ No newline at end of file diff --git a/deluge/ui/web/js/deluge-torrents.js b/deluge/ui/web/js/deluge-torrents.js index 5bf8f048d..19dcd1a27 100644 --- a/deluge/ui/web/js/deluge-torrents.js +++ b/deluge/ui/web/js/deluge-torrents.js @@ -22,7 +22,7 @@ Copyright: */ function queue(value) { - return (value == -1) ? "" : value + 1; + return (value == -1) ? '' : value + 1; } function name(value, p, r) { @@ -63,7 +63,7 @@ function progressBar(progress, width, text) { function seeds(value, p, r) { if (r.data['total_seeds'] > -1) { - return String.format("{0} ({1})", value, r.data['total_seeds']); + return String.format('{0} ({1})', value, r.data['total_seeds']); } else { return value; } @@ -71,7 +71,7 @@ function seeds(value, p, r) { function peers(value, p, r) { if (r.data['total_peers'] > -1) { - return String.format("{0} ({1})", value, r.data['total_peers']); + return String.format('{0} ({1})', value, r.data['total_peers']); } else { return value; } @@ -136,26 +136,26 @@ Deluge.Torrents = { }, this); } } -Deluge.Torrents.Store.setDefaultSort("queue"); +Deluge.Torrents.Store.setDefaultSort('queue'); Deluge.Torrents.Grid = new Ext.grid.GridPanel({ region: 'center', store: Deluge.Torrents.Store, cls: 'deluge-torrents', columns: [ - {id:'queue',header: "#", width: 30, sortable: true, renderer: queue, dataIndex: 'queue'}, - {id:'name', header: "Name", width: 150, sortable: true, renderer: name, dataIndex: 'name'}, - {header: "Size", width: 75, sortable: true, renderer: fsize, dataIndex: 'size'}, - {header: "Progress", width: 150, sortable: true, renderer: progress, dataIndex: 'progress'}, - {header: "Seeds", width: 60, sortable: true, renderer: seeds, dataIndex: 'seeds'}, - {header: "Peers", width: 60, sortable: true, renderer: peers, dataIndex: 'peers'}, - {header: "Down Speed", width: 80, sortable: true, renderer: torrent_speed, dataIndex: 'downspeed'}, - {header: "Up Speed", width: 80, sortable: true, renderer: torrent_speed, dataIndex: 'upspeed'}, - {header: "ETA", width: 60, sortable: true, renderer: ftime, dataIndex: 'eta'}, - {header: "Ratio", width: 60, sortable: true, renderer: avail, dataIndex: 'ratio'}, - {header: "Avail.", width: 60, sortable: true, renderer: avail, dataIndex: 'avail'}, - {header: "Added", width: 80, sortable: true, renderer: fdate, dataIndex: 'added'}, - {header: "Tracker", width: 120, sortable: true, renderer: tracker, dataIndex: 'tracker'} + {id:'queue',header: _('#'), width: 30, sortable: true, renderer: queue, dataIndex: 'queue'}, + {id:'name', header: _('Name'), width: 150, sortable: true, renderer: name, dataIndex: 'name'}, + {header: _('Size'), width: 75, sortable: true, renderer: fsize, dataIndex: 'size'}, + {header: _('Progress'), width: 150, sortable: true, renderer: progress, dataIndex: 'progress'}, + {header: _('Seeders'), width: 60, sortable: true, renderer: seeds, dataIndex: 'seeds'}, + {header: _('Peers'), width: 60, sortable: true, renderer: peers, dataIndex: 'peers'}, + {header: _('Down Speed'), width: 80, sortable: true, renderer: torrent_speed, dataIndex: 'downspeed'}, + {header: _('Up Speed'), width: 80, sortable: true, renderer: torrent_speed, dataIndex: 'upspeed'}, + {header: _('ETA'), width: 60, sortable: true, renderer: ftime, dataIndex: 'eta'}, + {header: _('Ratio'), width: 60, sortable: true, renderer: avail, dataIndex: 'ratio'}, + {header: _('Avail'), width: 60, sortable: true, renderer: avail, dataIndex: 'avail'}, + {header: _('Added'), width: 80, sortable: true, renderer: fdate, dataIndex: 'added'}, + {header: _('Tracker'), width: 120, sortable: true, renderer: tracker, dataIndex: 'tracker'} ], stripeRows: true, autoExpandColumn: 'name',