Add italian localization for iOS

This commit is contained in:
2020-12-25 15:46:12 +01:00
parent ea4171a75f
commit e025a49227
12 changed files with 134 additions and 29 deletions

View File

@@ -12,7 +12,6 @@
950C1788258E5BD300B2DBFE /* PhoneView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950C1787258E5BD300B2DBFE /* PhoneView.swift */; }; 950C1788258E5BD300B2DBFE /* PhoneView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950C1787258E5BD300B2DBFE /* PhoneView.swift */; };
9512D3C1257AB4F60023C3A1 /* NewReminderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9512D3C0257AB4F60023C3A1 /* NewReminderView.swift */; }; 9512D3C1257AB4F60023C3A1 /* NewReminderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9512D3C0257AB4F60023C3A1 /* NewReminderView.swift */; };
952DEDDF2576F8DC001DF85D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952DEDDE2576F8DC001DF85D /* SceneDelegate.swift */; }; 952DEDDF2576F8DC001DF85D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952DEDDE2576F8DC001DF85D /* SceneDelegate.swift */; };
953DDE7E2580312500C457CE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 953DDE7D2580312500C457CE /* LaunchScreen.storyboard */; };
954AF8F62588A5C300666D0C /* CircularList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F52588A5C300666D0C /* CircularList.swift */; }; 954AF8F62588A5C300666D0C /* CircularList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F52588A5C300666D0C /* CircularList.swift */; };
954AF8F82588A5CF00666D0C /* FavouritesList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F72588A5CF00666D0C /* FavouritesList.swift */; }; 954AF8F82588A5CF00666D0C /* FavouritesList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F72588A5CF00666D0C /* FavouritesList.swift */; };
954AF8FA2588A5DD00666D0C /* RemindersList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F92588A5DD00666D0C /* RemindersList.swift */; }; 954AF8FA2588A5DD00666D0C /* RemindersList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AF8F92588A5DD00666D0C /* RemindersList.swift */; };
@@ -24,6 +23,8 @@
9554BDB8257E498F00D8925B /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9554BDB7257E498F00D8925B /* OnboardingView.swift */; }; 9554BDB8257E498F00D8925B /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9554BDB7257E498F00D8925B /* OnboardingView.swift */; };
955B7A0E257D098C0091B1F9 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955B7A0D257D098C0091B1F9 /* SearchBar.swift */; }; 955B7A0E257D098C0091B1F9 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955B7A0D257D098C0091B1F9 /* SearchBar.swift */; };
955B7A10257D10A70091B1F9 /* ViewControllerResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955B7A0F257D10A70091B1F9 /* ViewControllerResolver.swift */; }; 955B7A10257D10A70091B1F9 /* ViewControllerResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955B7A0F257D10A70091B1F9 /* ViewControllerResolver.swift */; };
955B984D25962C3800ED4831 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 955B984F25962C3800ED4831 /* Localizable.strings */; };
953DDE7E2580312500C457CE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 953DDE7D2580312500C457CE /* LaunchScreen.storyboard */; };
95906F48257508660060F5D0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95906F47257506360060F5D0 /* Assets.xcassets */; }; 95906F48257508660060F5D0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95906F47257506360060F5D0 /* Assets.xcassets */; };
95906F4D257510370060F5D0 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 95906F4C257510370060F5D0 /* GoogleService-Info.plist */; }; 95906F4D257510370060F5D0 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 95906F4C257510370060F5D0 /* GoogleService-Info.plist */; };
95B4CE142588BC890090D5E8 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B4CE132588BC890090D5E8 /* SettingsView.swift */; }; 95B4CE142588BC890090D5E8 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B4CE132588BC890090D5E8 /* SettingsView.swift */; };
@@ -63,7 +64,6 @@
9512D3C0257AB4F60023C3A1 /* NewReminderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewReminderView.swift; sourceTree = "<group>"; }; 9512D3C0257AB4F60023C3A1 /* NewReminderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewReminderView.swift; sourceTree = "<group>"; };
952C5954255C57650018C010 /* shared.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = shared.framework; path = "../../shared/build/xcode-frameworks/shared.framework"; sourceTree = "<group>"; }; 952C5954255C57650018C010 /* shared.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = shared.framework; path = "../../shared/build/xcode-frameworks/shared.framework"; sourceTree = "<group>"; };
952DEDDE2576F8DC001DF85D /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; 952DEDDE2576F8DC001DF85D /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
953DDE7D2580312500C457CE /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
954AF8F52588A5C300666D0C /* CircularList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularList.swift; sourceTree = "<group>"; }; 954AF8F52588A5C300666D0C /* CircularList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularList.swift; sourceTree = "<group>"; };
954AF8F72588A5CF00666D0C /* FavouritesList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavouritesList.swift; sourceTree = "<group>"; }; 954AF8F72588A5CF00666D0C /* FavouritesList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavouritesList.swift; sourceTree = "<group>"; };
954AF8F92588A5DD00666D0C /* RemindersList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemindersList.swift; sourceTree = "<group>"; }; 954AF8F92588A5DD00666D0C /* RemindersList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemindersList.swift; sourceTree = "<group>"; };
@@ -75,6 +75,9 @@
9554BDB7257E498F00D8925B /* OnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingView.swift; sourceTree = "<group>"; }; 9554BDB7257E498F00D8925B /* OnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingView.swift; sourceTree = "<group>"; };
955B7A0D257D098C0091B1F9 /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = "<group>"; }; 955B7A0D257D098C0091B1F9 /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = "<group>"; };
955B7A0F257D10A70091B1F9 /* ViewControllerResolver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerResolver.swift; sourceTree = "<group>"; }; 955B7A0F257D10A70091B1F9 /* ViewControllerResolver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerResolver.swift; sourceTree = "<group>"; };
955B984E25962C3800ED4831 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
955B985025962C3B00ED4831 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
953DDE7D2580312500C457CE /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
95906F47257506360060F5D0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 95906F47257506360060F5D0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
95906F4C257510370060F5D0 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; }; 95906F4C257510370060F5D0 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
959B531E25764726009AD895 /* circolapp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = circolapp.entitlements; sourceTree = "<group>"; }; 959B531E25764726009AD895 /* circolapp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = circolapp.entitlements; sourceTree = "<group>"; };
@@ -195,6 +198,7 @@
954E683C2574ED9E0034EBA8 /* UserDefaultsExtensions.swift */, 954E683C2574ED9E0034EBA8 /* UserDefaultsExtensions.swift */,
95F6666D2590D712006DE74F /* URLUtils.swift */, 95F6666D2590D712006DE74F /* URLUtils.swift */,
953DDE7D2580312500C457CE /* LaunchScreen.storyboard */, 953DDE7D2580312500C457CE /* LaunchScreen.storyboard */,
955B984F25962C3800ED4831 /* Localizable.strings */,
95CA31B8255C1EE000AC095B /* Info.plist */, 95CA31B8255C1EE000AC095B /* Info.plist */,
95906F4C257510370060F5D0 /* GoogleService-Info.plist */, 95906F4C257510370060F5D0 /* GoogleService-Info.plist */,
95906F47257506360060F5D0 /* Assets.xcassets */, 95906F47257506360060F5D0 /* Assets.xcassets */,
@@ -257,6 +261,7 @@
knownRegions = ( knownRegions = (
en, en,
Base, Base,
it,
); );
mainGroup = 95CA31A3255C1EDD00AC095B; mainGroup = 95CA31A3255C1EDD00AC095B;
productRefGroup = 95CA31AD255C1EDE00AC095B /* Products */; productRefGroup = 95CA31AD255C1EDE00AC095B /* Products */;
@@ -273,6 +278,7 @@
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
955B984D25962C3800ED4831 /* Localizable.strings in Resources */,
95CA31B7255C1EE000AC095B /* Preview Assets.xcassets in Resources */, 95CA31B7255C1EE000AC095B /* Preview Assets.xcassets in Resources */,
95906F4D257510370060F5D0 /* GoogleService-Info.plist in Resources */, 95906F4D257510370060F5D0 /* GoogleService-Info.plist in Resources */,
95906F48257508660060F5D0 /* Assets.xcassets in Resources */, 95906F48257508660060F5D0 /* Assets.xcassets in Resources */,
@@ -397,6 +403,18 @@
}; };
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
955B984F25962C3800ED4831 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
955B984E25962C3800ED4831 /* en */,
955B985025962C3B00ED4831 /* it */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */ /* Begin XCBuildConfiguration section */
95CA31B9255C1EE000AC095B /* Debug */ = { 95CA31B9255C1EE000AC095B /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;

View File

@@ -21,10 +21,10 @@
<rect key="frame" x="0.0" y="44" width="414" height="96"/> <rect key="frame" x="0.0" y="44" width="414" height="96"/>
<directionalEdgeInsets key="directionalLayoutMargins" top="8" leading="16" bottom="8" trailing="16"/> <directionalEdgeInsets key="directionalLayoutMargins" top="8" leading="16" bottom="8" trailing="16"/>
<items> <items>
<navigationItem title="Circulars" largeTitleDisplayMode="always" id="xPj-vK-Hgf"/> <navigationItem largeTitleDisplayMode="always" id="xPj-vK-Hgf"/>
</items> </items>
</navigationBar> </navigationBar>
<searchBar contentMode="redraw" searchBarStyle="minimal" placeholder="Search circulars" translatesAutoresizingMaskIntoConstraints="NO" id="4TW-7z-7jf"> <searchBar contentMode="redraw" searchBarStyle="minimal" translatesAutoresizingMaskIntoConstraints="NO" id="4TW-7z-7jf">
<rect key="frame" x="0.0" y="140" width="414" height="38"/> <rect key="frame" x="0.0" y="140" width="414" height="38"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="38" id="f97-Xy-3Qi"/> <constraint firstAttribute="height" constant="38" id="f97-Xy-3Qi"/>
@@ -36,10 +36,10 @@
<rect key="frame" x="0.0" y="779" width="414" height="83"/> <rect key="frame" x="0.0" y="779" width="414" height="83"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<items> <items>
<tabBarItem title="Circulars" image="folder.fill" catalog="system" id="WuE-0H-fGb"/> <tabBarItem title="" image="folder.fill" catalog="system" id="WuE-0H-fGb"/>
<tabBarItem title="Favourites" image="book.fill" catalog="system" id="e4w-uW-Q8O"/> <tabBarItem title="" image="book.fill" catalog="system" id="e4w-uW-Q8O"/>
<tabBarItem title="Reminders" image="alarm.fill" catalog="system" id="yC0-mi-bnG"/> <tabBarItem title="" image="alarm.fill" catalog="system" id="yC0-mi-bnG"/>
<tabBarItem title="Settings" image="gear" catalog="system" id="xJj-xy-3IB"/> <tabBarItem title="" image="gear" catalog="system" id="xJj-xy-3IB"/>
</items> </items>
</tabBar> </tabBar>
</subviews> </subviews>

View File

@@ -63,7 +63,7 @@ class iOSRepository {
public static func indexToSpotlight(circular: Circular) { public static func indexToSpotlight(circular: Circular) {
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String) let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
attributeSet.title = "Circular number \(circular.id)" attributeSet.title = NSString.localizedStringWithFormat(NSLocalizedString("Circular number %@", comment: "") as NSString, String(circular.id)) as String
attributeSet.contentDescription = circular.name attributeSet.contentDescription = circular.name
attributeSet.identifier = "\(circular.id)" attributeSet.identifier = "\(circular.id)"

View File

@@ -30,7 +30,7 @@ struct CircularView: View {
var body: some View { var body: some View {
VStack(alignment: .leading) { VStack(alignment: .leading) {
HStack { HStack {
Text("Circular number " + String(circular.id)) Text("Circular number \(String(circular.id))")
.font(.headline) .font(.headline)
Text(circular.date) Text(circular.date)
.font(.subheadline) .font(.subheadline)

View File

@@ -26,7 +26,7 @@ struct FavouritesList: View {
List(favouritesViewModel.circulars, id: \.id) { circular in List(favouritesViewModel.circulars, id: \.id) { circular in
CircularView(circular: circular) CircularView(circular: circular)
} }
.navigationBarTitle(Text("Favourites"), displayMode: .large) .navigationBarTitle(Text("Bookmarks"), displayMode: .large)
.addSearchBar(self.searchBar) .addSearchBar(self.searchBar)
.onReceive(searchBar.$text) {query in .onReceive(searchBar.$text) {query in
self.favouritesViewModel.search(query: query) self.favouritesViewModel.search(query: query)

View File

@@ -50,7 +50,7 @@ struct NewReminderView: View {
let center = UNUserNotificationCenter.current() let center = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent() let content = UNMutableNotificationContent()
content.title = "Circular number " + String(circular.id) content.title = NSString.localizedStringWithFormat(NSLocalizedString("Circular number %@", comment: "") as NSString, String(circular.id)) as String
content.body = circular.name content.body = circular.name
content.sound = UNNotificationSound.default content.sound = UNNotificationSound.default
content.userInfo["reminder"] = true content.userInfo["reminder"] = true

View File

@@ -36,7 +36,7 @@ struct PhoneView: View {
} }
.tabItem { .tabItem {
Image(systemName: "book.fill") Image(systemName: "book.fill")
Text("Favourites") Text("Bookmarks")
} }
NavigationView { NavigationView {

View File

@@ -11,7 +11,7 @@ class SearchBar: NSObject, ObservableObject {
self.searchController.obscuresBackgroundDuringPresentation = false self.searchController.obscuresBackgroundDuringPresentation = false
self.searchController.searchResultsUpdater = self self.searchController.searchResultsUpdater = self
self.searchController.searchBar.placeholder = placeholder self.searchController.searchBar.placeholder = NSLocalizedString(placeholder, comment: "")
} }
} }

View File

@@ -52,26 +52,19 @@ struct SettingsView: View {
}) { }) {
Text("Privacy policy") Text("Privacy policy")
} }
HStack {
Text("Version name")
Spacer()
Text(
Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "Error"
)
}
HStack {
Text("Version code")
Spacer()
Text(
Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "Error"
)
}
NavigationLink(destination: NavigationLink(destination:
CarteView() CarteView()
.navigationBarTitle("Open source licenses", displayMode: .inline) .navigationBarTitle("Open source licenses", displayMode: .inline)
) { ) {
Text("Open source licenses") Text("Open source licenses")
} }
HStack {
Text("Version")
Spacer()
Text(
Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "Error"
)
}
} }
} }
.navigationBarTitle("Settings", displayMode: .inline) .navigationBarTitle("Settings", displayMode: .inline)

View File

@@ -36,7 +36,7 @@ struct SidebarView: View {
tag: Screen.favourites, tag: Screen.favourites,
selection: $state, selection: $state,
label: { label: {
Label("Favourites", systemImage: "book") Label("Bookmarks", systemImage: "book")
}) })
NavigationLink( NavigationLink(
destination: RemindersList(), destination: RemindersList(),

View File

@@ -0,0 +1,47 @@
/*
* Circolapp
* Copyright (C) 2019-2020 Matteo Schiff
*
* 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 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
"All circulars" = "All circulars";
"Circulars" = "Circulars";
"Bookmarks" = "Bookmarks";
"Reminders" = "Reminders";
"Settings" = "Settings";
"School" = "School";
"School website" = "School website";
"Privacy policy" = "Privacy policy";
"Error" = "Error";
"Version" = "Version";
"Open source licenses" = "Open source licenses";
"Search circulars" = "Search circulars";
"GENERAL" = "GENERAL";
"SCHOOL" = "SCHOOL";
"ABOUT" = "ABOUT";
"Done" = "Done";
"Cancel" = "Cancel";
"Choose your school" = "Choose your school";
"Welcome to CircolApp" = "Welcome to CircolApp";
"Pick a date for the reminder" = "Pick a date for the reminder";
"New reminder" = "New reminder";
"Circular number %@" = "Circular number %@";

View File

@@ -0,0 +1,47 @@
/*
* Circolapp
* Copyright (C) 2019-2020 Matteo Schiff
*
* 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 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
"All circulars" = "Tutte le circolari";
"Circulars" = "Circolari";
"Bookmarks" = "Segnalibri";
"Reminders" = "Promemoria";
"Settings" = "Impostazioni";
"School" = "Scuola";
"School website" = "Sito della scuola";
"Privacy policy" = "Privacy policy";
"Error" = "Errore";
"Version" = "Versione";
"Open source licenses" = "Licenze open source";
"Search circulars" = "Cerca";
"GENERAL" = "GENERALE";
"SCHOOL" = "SCUOLA";
"ABOUT" = "INFORMAZIONI";
"Done" = "Fatto";
"Cancel" = "Annulla";
"Choose your school" = "Scegli la tua scuola";
"Welcome to CircolApp" = "Benvenuto su Circolapp";
"Pick a date for the reminder" = "Scegli una data per il promemoria";
"New reminder" = "Nuovo promemoria";
"Circular number %@" = "Circolare numero %@";