diff options
-rw-r--r-- | README.md | 25 | ||||
-rw-r--r-- | appinfo/info.xml | 2 | ||||
-rw-r--r-- | issue_template.md | 109 | ||||
-rw-r--r-- | js/components/addressBookList/addressBookList_controller.js | 7 | ||||
-rw-r--r-- | js/dav/dav.js | 22 | ||||
-rw-r--r-- | js/dav/lib/client.js | 5 | ||||
-rw-r--r-- | js/dav/lib/contacts.js | 18 | ||||
-rw-r--r-- | js/public/script.js | 20 | ||||
-rw-r--r-- | js/services/addressBook_service.js | 13 | ||||
-rw-r--r-- | l10n/en_GB.js | 5 | ||||
-rw-r--r-- | l10n/en_GB.json | 5 | ||||
-rw-r--r-- | l10n/he.js | 2 | ||||
-rw-r--r-- | l10n/he.json | 2 | ||||
-rw-r--r-- | l10n/ko.js | 37 | ||||
-rw-r--r-- | l10n/ko.json | 35 | ||||
-rw-r--r-- | l10n/nb_NO.js | 4 | ||||
-rw-r--r-- | l10n/nb_NO.json | 4 | ||||
-rw-r--r-- | l10n/pl.js | 38 | ||||
-rw-r--r-- | l10n/pl.json | 36 | ||||
-rw-r--r-- | l10n/sl.js | 5 | ||||
-rw-r--r-- | l10n/sl.json | 5 |
21 files changed, 383 insertions, 16 deletions
@@ -1,15 +1,22 @@ -# Contacts -Place this app in **owncloud/apps/** +# ownCloud Contacts -## Publish to App Store +[![Build Status](https://scrutinizer-ci.com/g/owncloud/contacts/badges/build.png?b=master)](https://scrutinizer-ci.com/g/owncloud/contacts/build-status/master) +[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/owncloud/contacts/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/owncloud/contacts/?branch=master) +[![Code Coverage](https://scrutinizer-ci.com/g/owncloud/contacts/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/owncloud/contacts/?branch=master) -First get an account for the [App Store](http://apps.owncloud.com/) then run: +**A contacts app for [ownCloud](https://owncloud.org).** - make appstore_package +It will replace the [old contacts app](https://github.com/owncloudarchive/contacts) with ownCloud 9.0, and is only the frontend for the new CardDAV-Backend which has moved into the [ownCloud Core](https://github.com/owncloud/core). -The archive is located in build/artifacts/appstore and can then be uploaded to the App Store. +![](https://raw.githubusercontent.com/owncloud/screenshots/master/contacts/contacts.png) -## Running tests -After [Installing PHPUnit](http://phpunit.de/getting-started.html) run: +## Maintainers: - phpunit -c phpunit.xml +- [Thomas Müller](https://github.com/DeepDiver1975) +- [Hendrik Leppelsack](https://github.com/Henni) +- [Jan-Christoph Borchardt](https://github.com/jancborchardt) +- [Alexander Weidinger](https://github.com/irgendwie) +- [Tom Needham](https://github.com/tomneedham) + + +If you’d like to join, just go through the [issue list](https://github.com/owncloud/contacts/issues) and fix some. :) We’re also in [#owncloud-contacts on freenode IRC](https://webchat.freenode.net/?channels=owncloud-contacts). diff --git a/appinfo/info.xml b/appinfo/info.xml index a648b827..4f10a999 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -4,7 +4,7 @@ <name>Contacts</name> <description>The new and improved app for your Contacts.</description> <licence>AGPL</licence> - <author>Hendrik Leppelsack</author> + <author>Hendrik Leppelsack, Thomas Müller, Alexander Weidinger, Jan-Christoph Borchardt, Tom Needham</author> <version>1.0.0.0</version> <category>other</category> <dependencies> diff --git a/issue_template.md b/issue_template.md new file mode 100644 index 00000000..346b3826 --- /dev/null +++ b/issue_template.md @@ -0,0 +1,109 @@ +<!-- +Please report only issues corresponding to the contacts app for ownCloud 9 or later. +The old contacts app, which is compatible with ownCloud 8.2 or earlier, is discontinued! + +Migration and CardDAV issues belong in the core repo! +https://github.com/owncloud/core/issues +--> +### Steps to reproduce +1. +2. +3. + +### Expected behaviour +Tell us what should happen + +### Actual behaviour +Tell us what happens instead + +### Server configuration +**Operating system**: + +**Web server:** + +**Database:** + +**PHP version:** + +**ownCloud version:** (see ownCloud admin page) + +**Contacts version:** (see ownCloud apps page) + +**Updated from an older ownCloud or fresh install:** + +**Signing status (ownCloud 9.0 and above):** + +``` +Login as admin user into your ownCloud and access +http://example.com/index.php/settings/integrity/failed +paste the results here. +``` + +**List of activated apps:** + +``` +If you have access to your command line run e.g.: +sudo -u www-data php occ app:list +from within your ownCloud installation folder +``` + +**The content of config/config.php:** + +``` +If you have access to your command line run e.g.: +sudo -u www-data php occ config:list system +from within your ownCloud installation folder + +or + +Insert your config.php content here +(Without the database password, passwordsalt and secret) +``` + +**Are you using external storage, if yes which one:** local/smb/sftp/... + +**Are you using encryption:** yes/no + +**Are you using an external user-backend, if yes which one:** LDAP/ActiveDirectory/Webdav/... + +#### LDAP configuration (delete this part if not used) + +``` +With access to your command line run e.g.: +sudo -u www-data php occ ldap:show-config +from within your ownCloud installation folder + +Without access to your command line download the data/owncloud.db to your local +computer or access your SQL server remotely and run the select query: +SELECT * FROM `oc_appconfig` WHERE `appid` = 'user_ldap'; + + +Eventually replace sensitive data as the name/IP-address of your LDAP server or groups. +``` + +### Client configuration +**Browser:** + +**Operating system:** + +**CardDAV-clients:** + +### Logs +#### Web server error log +``` +Insert your webserver log here +``` + +#### ownCloud log (data/owncloud.log) +``` +Insert your ownCloud log here +``` + +#### Browser log +``` +Insert your browser log here, this could for example include: + +a) The javascript console log +b) The network log +c) ... +``` diff --git a/js/components/addressBookList/addressBookList_controller.js b/js/components/addressBookList/addressBookList_controller.js index 6fe7089d..8a6c40e2 100644 --- a/js/components/addressBookList/addressBookList_controller.js +++ b/js/components/addressBookList/addressBookList_controller.js @@ -7,7 +7,12 @@ app.controller('addressbooklistCtrl', ['$scope', 'AddressBookService', 'Settings ctrl.createAddressBook = function() { if(ctrl.newAddressBookName) { - AddressBookService.create(ctrl.newAddressBookName); + AddressBookService.create(ctrl.newAddressBookName).then(function() { + AddressBookService.getAddressBook(ctrl.newAddressBookName).then(function(addressBook) { + ctrl.addressBooks.push(addressBook); + scope.$apply(); + }); + }); } }; }]); diff --git a/js/dav/dav.js b/js/dav/dav.js index 476d35ff..efafcb68 100644 --- a/js/dav/dav.js +++ b/js/dav/dav.js @@ -1476,6 +1476,14 @@ var Client = (function () { return calendars.syncCaldavAccount(account, options); } }, { + key: 'getAddressBook', + value: function getAddressBook() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + options.xhr = options.xhr || this.xhr; + return contacts.getAddressBook(options); + } + }, { key: 'createAddressBook', value: function createAddressBook() { var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; @@ -1551,6 +1559,7 @@ exports.Client = Client; Object.defineProperty(exports, '__esModule', { value: true }); +exports.getAddressBook = getAddressBook; exports.createAddressBook = createAddressBook; exports.deleteAddressBook = deleteAddressBook; exports.renameAddressBook = renameAddressBook; @@ -1656,6 +1665,19 @@ var listAddressBooks = _co2['default'].wrap(regeneratorRuntime.mark(function cal })); exports.listAddressBooks = listAddressBooks; + +function getAddressBook(options) { + var addressBookUrl = _url2['default'].resolve(options.url, options.displayName); + var req = request.propfind({ + props: [{ name: 'displayname', namespace: ns.DAV }, { name: 'owner', namespace: ns.DAV }, { name: 'getctag', namespace: ns.CALENDAR_SERVER }, { name: 'resourcetype', namespace: ns.DAV }, { name: 'sync-token', namespace: ns.DAV }, + //{ name: 'groups', namespace: ns.OC }, + { name: 'invite', namespace: ns.OC }], + depth: 1 + }); + + return options.xhr.send(req, addressBookUrl); +} + /** * @return {Promise} promise will resolve when the addressBook has been created. * diff --git a/js/dav/lib/client.js b/js/dav/lib/client.js index 3226d3d8..2846278f 100644 --- a/js/dav/lib/client.js +++ b/js/dav/lib/client.js @@ -73,6 +73,11 @@ export class Client { return calendars.syncCaldavAccount(account, options); } + getAddressBook(options={}) { + options.xhr = options.xhr || this.xhr; + return contacts.getAddressBook(options); + } + createAddressBook(options={}) { options.xhr = options.xhr || this.xhr; return contacts.createAddressBook(options); diff --git a/js/dav/lib/contacts.js b/js/dav/lib/contacts.js index e20acf6b..719eb08e 100644 --- a/js/dav/lib/contacts.js +++ b/js/dav/lib/contacts.js @@ -56,6 +56,24 @@ export let listAddressBooks = co.wrap(function *(account, options) { return addressBooks; }); +export function getAddressBook(options) { + let addressBookUrl = url.resolve(options.url, options.displayName); + var req = request.propfind({ + props: [ + { name: 'displayname', namespace: ns.DAV }, + { name: 'owner', namespace: ns.DAV }, + { name: 'getctag', namespace: ns.CALENDAR_SERVER }, + { name: 'resourcetype', namespace: ns.DAV }, + { name: 'sync-token', namespace: ns.DAV }, + //{ name: 'groups', namespace: ns.OC }, + { name: 'invite', namespace: ns.OC } + ], + depth: 1 + }); + + return options.xhr.send(req, addressBookUrl); +} + /** * @return {Promise} promise will resolve when the addressBook has been created. * diff --git a/js/public/script.js b/js/public/script.js index 3778d657..020bf746 100644 --- a/js/public/script.js +++ b/js/public/script.js @@ -184,7 +184,12 @@ app.controller('addressbooklistCtrl', ['$scope', 'AddressBookService', 'Settings ctrl.createAddressBook = function() { if(ctrl.newAddressBookName) { - AddressBookService.create(ctrl.newAddressBookName); + AddressBookService.create(ctrl.newAddressBookName).then(function() { + AddressBookService.getAddressBook(ctrl.newAddressBookName).then(function(addressBook) { + ctrl.addressBooks.push(addressBook); + scope.$apply(); + }); + }); } }; }]); @@ -807,6 +812,19 @@ app.factory('AddressBookService', ['DavClient', 'DavService', 'SettingsService', return addressBooks[0]; }, + getAddressBook: function(displayName) { + return DavService.then(function(account) { + return DavClient.getAddressBook({displayName:displayName, url:account.homeUrl}).then(function(addressBook) { + addressBook = new AddressBook({ + url: addressBook[0].href, + data: addressBook[0] + }); + addressBook.displayName = displayName; + return addressBook; + }); + }); + }, + create: function(displayName) { return DavService.then(function(account) { return DavClient.createAddressBook({displayName:displayName, url:account.homeUrl}); diff --git a/js/services/addressBook_service.js b/js/services/addressBook_service.js index e3952eae..7cc4225a 100644 --- a/js/services/addressBook_service.js +++ b/js/services/addressBook_service.js @@ -40,6 +40,19 @@ app.factory('AddressBookService', ['DavClient', 'DavService', 'SettingsService', return addressBooks[0]; }, + getAddressBook: function(displayName) { + return DavService.then(function(account) { + return DavClient.getAddressBook({displayName:displayName, url:account.homeUrl}).then(function(addressBook) { + addressBook = new AddressBook({ + url: addressBook[0].href, + data: addressBook[0] + }); + addressBook.displayName = displayName; + return addressBook; + }); + }); + }, + create: function(displayName) { return DavService.then(function(account) { return DavClient.createAddressBook({displayName:displayName, url:account.homeUrl}); diff --git a/l10n/en_GB.js b/l10n/en_GB.js index 3a458f70..16785c96 100644 --- a/l10n/en_GB.js +++ b/l10n/en_GB.js @@ -4,8 +4,11 @@ OC.L10N.register( "Contacts" : "Contacts", "No contacts in here" : "No contacts in here", "Name" : "Name", + "Add field ..." : "Add field ...", "Add contact" : "Add contact", "All contacts" : "All contacts", + "Post Office Box" : "Post Office Box", + "Postal Code" : "Postal Code", "City" : "City", "State or province" : "State or province", "Country" : "Country", @@ -28,6 +31,8 @@ OC.L10N.register( "Phone" : "Phone", "Mobile" : "Mobile", "Fax" : "Fax", + "Fax home" : "Fax home", + "Fax work" : "Fax work", "Pager" : "Pager", "Voice" : "Voice" }, diff --git a/l10n/en_GB.json b/l10n/en_GB.json index 59880807..43aae2c4 100644 --- a/l10n/en_GB.json +++ b/l10n/en_GB.json @@ -2,8 +2,11 @@ "Contacts" : "Contacts", "No contacts in here" : "No contacts in here", "Name" : "Name", + "Add field ..." : "Add field ...", "Add contact" : "Add contact", "All contacts" : "All contacts", + "Post Office Box" : "Post Office Box", + "Postal Code" : "Postal Code", "City" : "City", "State or province" : "State or province", "Country" : "Country", @@ -26,6 +29,8 @@ "Phone" : "Phone", "Mobile" : "Mobile", "Fax" : "Fax", + "Fax home" : "Fax home", + "Fax work" : "Fax work", "Pager" : "Pager", "Voice" : "Voice" },"pluralForm" :"nplurals=2; plural=(n != 1);" @@ -31,6 +31,8 @@ OC.L10N.register( "Phone" : "טלפון", "Mobile" : "נייד", "Fax" : "פקס", + "Fax home" : "פקס בבית", + "Fax work" : "פקס בעבודה", "Pager" : "זימונית", "Voice" : "קולי" }, diff --git a/l10n/he.json b/l10n/he.json index 41ee7d9a..326f9bec 100644 --- a/l10n/he.json +++ b/l10n/he.json @@ -29,6 +29,8 @@ "Phone" : "טלפון", "Mobile" : "נייד", "Fax" : "פקס", + "Fax home" : "פקס בבית", + "Fax work" : "פקס בעבודה", "Pager" : "זימונית", "Voice" : "קולי" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/l10n/ko.js b/l10n/ko.js new file mode 100644 index 00000000..e3ebda78 --- /dev/null +++ b/l10n/ko.js @@ -0,0 +1,37 @@ +OC.L10N.register( + "contacts", + { + "Contacts" : "연락처", + "No contacts in here" : "여기에 연락처 없음", + "Name" : "이름", + "Add field ..." : "필드 추가...", + "Add contact" : "연락처 추가", + "All contacts" : "모든 연락처", + "Post Office Box" : "우편 사서함", + "Postal Code" : "우편 번호", + "City" : "도시", + "State or province" : "도 및 광역시", + "Country" : "국가", + "Address" : "주소", + "{addressbook} shared by {owner}" : "{owner} 님이 공유한 {addressbook}", + "Nickname" : "별명", + "Organization" : "조직", + "Notes" : "메모", + "Website" : "웹 사이트", + "Title" : "제목", + "Role" : "지위", + "Federated Cloud ID" : "연합 클라우드 ID", + "Home" : "가정", + "Work" : "직장", + "Other" : "기타", + "Groups" : "그룹", + "Birthday" : "생일", + "Email" : "이메일", + "Instant messaging" : "인스턴트 메시지", + "Phone" : "전화 번호", + "Mobile" : "휴대폰", + "Fax" : "팩스 번호", + "Pager" : "호출기", + "Voice" : "음성 번호" +}, +"nplurals=1; plural=0;"); diff --git a/l10n/ko.json b/l10n/ko.json new file mode 100644 index 00000000..7b70c558 --- /dev/null +++ b/l10n/ko.json @@ -0,0 +1,35 @@ +{ "translations": { + "Contacts" : "연락처", + "No contacts in here" : "여기에 연락처 없음", + "Name" : "이름", + "Add field ..." : "필드 추가...", + "Add contact" : "연락처 추가", + "All contacts" : "모든 연락처", + "Post Office Box" : "우편 사서함", + "Postal Code" : "우편 번호", + "City" : "도시", + "State or province" : "도 및 광역시", + "Country" : "국가", + "Address" : "주소", + "{addressbook} shared by {owner}" : "{owner} 님이 공유한 {addressbook}", + "Nickname" : "별명", + "Organization" : "조직", + "Notes" : "메모", + "Website" : "웹 사이트", + "Title" : "제목", + "Role" : "지위", + "Federated Cloud ID" : "연합 클라우드 ID", + "Home" : "가정", + "Work" : "직장", + "Other" : "기타", + "Groups" : "그룹", + "Birthday" : "생일", + "Email" : "이메일", + "Instant messaging" : "인스턴트 메시지", + "Phone" : "전화 번호", + "Mobile" : "휴대폰", + "Fax" : "팩스 번호", + "Pager" : "호출기", + "Voice" : "음성 번호" +},"pluralForm" :"nplurals=1; plural=0;" +}
\ No newline at end of file diff --git a/l10n/nb_NO.js b/l10n/nb_NO.js index f529e328..f70705cd 100644 --- a/l10n/nb_NO.js +++ b/l10n/nb_NO.js @@ -22,7 +22,7 @@ OC.L10N.register( "Role" : "Rolle", "Federated Cloud ID" : "ID for sammenknyttet sky", "Home" : "Hjem", - "Work" : "Arbeid", + "Work" : "Jobb", "Other" : "Annet", "Groups" : "Grupper", "Birthday" : "Bursdag", @@ -31,6 +31,8 @@ OC.L10N.register( "Phone" : "Telefon", "Mobile" : "Mobil", "Fax" : "Faks", + "Fax home" : "Faks hjemme", + "Fax work" : "Faks jobb", "Pager" : "Pager", "Voice" : "Svarer" }, diff --git a/l10n/nb_NO.json b/l10n/nb_NO.json index a72fe3fa..763592b0 100644 --- a/l10n/nb_NO.json +++ b/l10n/nb_NO.json @@ -20,7 +20,7 @@ "Role" : "Rolle", "Federated Cloud ID" : "ID for sammenknyttet sky", "Home" : "Hjem", - "Work" : "Arbeid", + "Work" : "Jobb", "Other" : "Annet", "Groups" : "Grupper", "Birthday" : "Bursdag", @@ -29,6 +29,8 @@ "Phone" : "Telefon", "Mobile" : "Mobil", "Fax" : "Faks", + "Fax home" : "Faks hjemme", + "Fax work" : "Faks jobb", "Pager" : "Pager", "Voice" : "Svarer" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/l10n/pl.js b/l10n/pl.js new file mode 100644 index 00000000..4ee29672 --- /dev/null +++ b/l10n/pl.js @@ -0,0 +1,38 @@ +OC.L10N.register( + "contacts", + { + "Contacts" : "Kontakty", + "No contacts in here" : "Nie ma tu żadnych kontaktów", + "Name" : "Nazwa", + "Add field ..." : "Dodaj pole ...", + "Add contact" : "Dodaj kontakt", + "All contacts" : "Wszystkie kontakty", + "Post Office Box" : "Skrytka Pocztowa", + "Postal Code" : "Kod Pocztowy", + "City" : "Miasto", + "State or province" : "Województwo ", + "Country" : "Kraj", + "Address" : "Adres", + "{addressbook} shared by {owner}" : "Książka {addressbook} udostępniona przez {owner}", + "Nickname" : "Nazwa", + "Organization" : "Organizacja", + "Notes" : "Notatki", + "Website" : "Strona www", + "Title" : "Tytuł", + "Role" : "Funkcja", + "Home" : "Dom", + "Work" : "Zawodowe", + "Other" : "Inne", + "Groups" : "Grupy", + "Birthday" : "Urodziny", + "Email" : "Email", + "Instant messaging" : "Szybkie wiadomości", + "Phone" : "Telefon", + "Mobile" : "Komórka", + "Fax" : "Faks", + "Fax home" : "Faks domowy", + "Fax work" : "Fakx pracowy", + "Pager" : "Pager", + "Voice" : "Połączenie głosowe" +}, +"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/l10n/pl.json b/l10n/pl.json new file mode 100644 index 00000000..38794e3c --- /dev/null +++ b/l10n/pl.json @@ -0,0 +1,36 @@ +{ "translations": { + "Contacts" : "Kontakty", + "No contacts in here" : "Nie ma tu żadnych kontaktów", + "Name" : "Nazwa", + "Add field ..." : "Dodaj pole ...", + "Add contact" : "Dodaj kontakt", + "All contacts" : "Wszystkie kontakty", + "Post Office Box" : "Skrytka Pocztowa", + "Postal Code" : "Kod Pocztowy", + "City" : "Miasto", + "State or province" : "Województwo ", + "Country" : "Kraj", + "Address" : "Adres", + "{addressbook} shared by {owner}" : "Książka {addressbook} udostępniona przez {owner}", + "Nickname" : "Nazwa", + "Organization" : "Organizacja", + "Notes" : "Notatki", + "Website" : "Strona www", + "Title" : "Tytuł", + "Role" : "Funkcja", + "Home" : "Dom", + "Work" : "Zawodowe", + "Other" : "Inne", + "Groups" : "Grupy", + "Birthday" : "Urodziny", + "Email" : "Email", + "Instant messaging" : "Szybkie wiadomości", + "Phone" : "Telefon", + "Mobile" : "Komórka", + "Fax" : "Faks", + "Fax home" : "Faks domowy", + "Fax work" : "Fakx pracowy", + "Pager" : "Pager", + "Voice" : "Połączenie głosowe" +},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +}
\ No newline at end of file @@ -7,6 +7,7 @@ OC.L10N.register( "Add field ..." : "Dodaj polje ...", "Add contact" : "Dodaj stik", "All contacts" : "Vsi stiki", + "Post Office Box" : "Poštni predal", "Postal Code" : "Poštna številka", "City" : "Mesto", "State or province" : "Zvezna država ali provinca", @@ -19,7 +20,7 @@ OC.L10N.register( "Website" : "Spletna stran", "Title" : "Naslov", "Role" : "Vloga", - "Federated Cloud ID" : "Oznaka Povezanega Oblaka (Federated Cloud ID)", + "Federated Cloud ID" : "ID Oblaka s prenosom dovoljenj", "Home" : "Domači naslov", "Work" : "Službeni naslov", "Other" : "Drugo", @@ -30,6 +31,8 @@ OC.L10N.register( "Phone" : "Telefon", "Mobile" : "Mobilni telefon", "Fax" : "Faks", + "Fax home" : "Domači faks", + "Fax work" : "Službeni faks", "Pager" : "Pozivnik", "Voice" : "Glas" }, diff --git a/l10n/sl.json b/l10n/sl.json index 14cc0627..50d6f9ad 100644 --- a/l10n/sl.json +++ b/l10n/sl.json @@ -5,6 +5,7 @@ "Add field ..." : "Dodaj polje ...", "Add contact" : "Dodaj stik", "All contacts" : "Vsi stiki", + "Post Office Box" : "Poštni predal", "Postal Code" : "Poštna številka", "City" : "Mesto", "State or province" : "Zvezna država ali provinca", @@ -17,7 +18,7 @@ "Website" : "Spletna stran", "Title" : "Naslov", "Role" : "Vloga", - "Federated Cloud ID" : "Oznaka Povezanega Oblaka (Federated Cloud ID)", + "Federated Cloud ID" : "ID Oblaka s prenosom dovoljenj", "Home" : "Domači naslov", "Work" : "Službeni naslov", "Other" : "Drugo", @@ -28,6 +29,8 @@ "Phone" : "Telefon", "Mobile" : "Mobilni telefon", "Fax" : "Faks", + "Fax home" : "Domači faks", + "Fax work" : "Službeni faks", "Pager" : "Pozivnik", "Voice" : "Glas" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" |