Skip to content

Commit 7627d28

Browse files
committed
Localization strings tunes.
Russian localization.
1 parent 3a0813e commit 7627d28

19 files changed

+353
-66
lines changed

Adamant.xcodeproj/project.pbxproj

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
4411402421C8B290703B13EB /* Pods_Adamant.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C107D5CB65B4D728B9D97C0F /* Pods_Adamant.framework */; };
1111
E913C8F21FFFA51D001A83F7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E913C8F11FFFA51D001A83F7 /* AppDelegate.swift */; };
1212
E913C8F91FFFA51D001A83F7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E913C8F81FFFA51D001A83F7 /* Assets.xcassets */; };
13-
E913C8FC1FFFA51D001A83F7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E913C8FA1FFFA51D001A83F7 /* LaunchScreen.storyboard */; };
1413
E913C9081FFFA943001A83F7 /* AdamantCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = E913C9071FFFA943001A83F7 /* AdamantCore.swift */; };
1514
E913C90D1FFFA99B001A83F7 /* Keypair.swift in Sources */ = {isa = PBXBuildFile; fileRef = E913C90C1FFFA99B001A83F7 /* Keypair.swift */; };
1615
E913C9171FFFAF76001A83F7 /* JSAdamantCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = E913C9161FFFAF76001A83F7 /* JSAdamantCore.swift */; };
@@ -24,6 +23,9 @@
2423
E9256F632034E7DE00DE86E9 /* Settings.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E9256F652034E7DE00DE86E9 /* Settings.storyboard */; };
2524
E9256F692034E98700DE86E9 /* Login.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E9256F6B2034E98700DE86E9 /* Login.storyboard */; };
2625
E9256F6D20357B1700DE86E9 /* LoginHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9256F6C20357B1700DE86E9 /* LoginHeader.xib */; };
26+
E9256F762039A9A200DE86E9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E9256F752039A9A200DE86E9 /* LaunchScreen.storyboard */; };
27+
E9256F792039B29A00DE86E9 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E9256F7B2039B29A00DE86E9 /* Localizable.strings */; };
28+
E9256F7E2039B29D00DE86E9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E9256F802039B29D00DE86E9 /* InfoPlist.strings */; };
2729
E93580D9201607DA0057FC2E /* knownContacts.json in Resources */ = {isa = PBXBuildFile; fileRef = E93580D8201607DA0057FC2E /* knownContacts.json */; };
2830
E93B0D742028B21400126346 /* ChatsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = E93B0D732028B21400126346 /* ChatsProvider.swift */; };
2931
E93B0D762028B28E00126346 /* AdamantChatsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = E93B0D752028B28E00126346 /* AdamantChatsProvider.swift */; };
@@ -152,7 +154,6 @@
152154
E913C8EE1FFFA51D001A83F7 /* Adamant.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Adamant.app; sourceTree = BUILT_PRODUCTS_DIR; };
153155
E913C8F11FFFA51D001A83F7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
154156
E913C8F81FFFA51D001A83F7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
155-
E913C8FB1FFFA51D001A83F7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
156157
E913C8FD1FFFA51E001A83F7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
157158
E913C9071FFFA943001A83F7 /* AdamantCore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdamantCore.swift; sourceTree = "<group>"; };
158159
E913C90C1FFFA99B001A83F7 /* Keypair.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Keypair.swift; sourceTree = "<group>"; };
@@ -178,6 +179,13 @@
178179
E9256F642034E7DE00DE86E9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Settings.storyboard; sourceTree = "<group>"; };
179180
E9256F6A2034E98700DE86E9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Login.storyboard; sourceTree = "<group>"; };
180181
E9256F6C20357B1700DE86E9 /* LoginHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginHeader.xib; sourceTree = "<group>"; };
182+
E9256F6E2039A7E800DE86E9 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Account.strings; sourceTree = "<group>"; };
183+
E9256F6F2039A7E900DE86E9 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Chats.strings; sourceTree = "<group>"; };
184+
E9256F702039A7E900DE86E9 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Login.strings; sourceTree = "<group>"; };
185+
E9256F712039A7E900DE86E9 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Settings.strings; sourceTree = "<group>"; };
186+
E9256F752039A9A200DE86E9 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
187+
E9256F7A2039B29A00DE86E9 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
188+
E9256F7F2039B29D00DE86E9 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
181189
E93580D8201607DA0057FC2E /* knownContacts.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = knownContacts.json; sourceTree = "<group>"; };
182190
E93B0D732028B21400126346 /* ChatsProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatsProvider.swift; sourceTree = "<group>"; };
183191
E93B0D752028B28E00126346 /* AdamantChatsProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdamantChatsProvider.swift; sourceTree = "<group>"; };
@@ -420,8 +428,10 @@
420428
isa = PBXGroup;
421429
children = (
422430
E9E7CDA42002A6EB00DFC4DB /* Fonts */,
423-
E913C8FA1FFFA51D001A83F7 /* LaunchScreen.storyboard */,
424431
E913C8F81FFFA51D001A83F7 /* Assets.xcassets */,
432+
E9256F802039B29D00DE86E9 /* InfoPlist.strings */,
433+
E9256F7B2039B29A00DE86E9 /* Localizable.strings */,
434+
E9256F752039A9A200DE86E9 /* LaunchScreen.storyboard */,
425435
E9C51EEC2011416E00385EB7 /* adamant-core.js */,
426436
E93580D8201607DA0057FC2E /* knownContacts.json */,
427437
);
@@ -705,8 +715,8 @@
705715
isa = PBXResourcesBuildPhase;
706716
buildActionMask = 2147483647;
707717
files = (
718+
E9256F762039A9A200DE86E9 /* LaunchScreen.storyboard in Resources */,
708719
E9EC341B200524CA00C0E546 /* Roboto_300_normal.ttf in Resources */,
709-
E913C8FC1FFFA51D001A83F7 /* LaunchScreen.storyboard in Resources */,
710720
E9E7CDBC2003AAA700DFC4DB /* RoundAvatarTableViewCell.xib in Resources */,
711721
E95F85C8200A9B070070534A /* ChatTableViewCell.xib in Resources */,
712722
E913C8F91FFFA51D001A83F7 /* Assets.xcassets in Resources */,
@@ -718,10 +728,12 @@
718728
E9EC3417200524CA00C0E546 /* Exo+2_400_italic.ttf in Resources */,
719729
E9EC341E200524CA00C0E546 /* Roboto_500_normal.ttf in Resources */,
720730
E9EC3419200524CA00C0E546 /* Exo+2_500_normal.ttf in Resources */,
731+
E9256F7E2039B29D00DE86E9 /* InfoPlist.strings in Resources */,
721732
E9256F6D20357B1700DE86E9 /* LoginHeader.xib in Resources */,
722733
E9EC3416200524CA00C0E546 /* Exo+2_300_normal.ttf in Resources */,
723734
E9256F632034E7DE00DE86E9 /* Settings.storyboard in Resources */,
724735
E9EC341C200524CA00C0E546 /* Roboto_400_italic.ttf in Resources */,
736+
E9256F792039B29A00DE86E9 /* Localizable.strings in Resources */,
725737
E9B6CC60201793D800486EA1 /* MultilineLableTableViewCell.xib in Resources */,
726738
E9B6CC5620176F3300486EA1 /* TextViewTableViewCell.xib in Resources */,
727739
E9EC3415200524CA00C0E546 /* Exo+2_100_normal.ttf in Resources */,
@@ -936,18 +948,11 @@
936948
/* End PBXTargetDependency section */
937949

938950
/* Begin PBXVariantGroup section */
939-
E913C8FA1FFFA51D001A83F7 /* LaunchScreen.storyboard */ = {
940-
isa = PBXVariantGroup;
941-
children = (
942-
E913C8FB1FFFA51D001A83F7 /* Base */,
943-
);
944-
name = LaunchScreen.storyboard;
945-
sourceTree = "<group>";
946-
};
947951
E9256F622034E0E100DE86E9 /* Chats.storyboard */ = {
948952
isa = PBXVariantGroup;
949953
children = (
950954
E9256F612034E0E100DE86E9 /* Base */,
955+
E9256F6F2039A7E900DE86E9 /* ru */,
951956
);
952957
name = Chats.storyboard;
953958
sourceTree = "<group>";
@@ -956,6 +961,7 @@
956961
isa = PBXVariantGroup;
957962
children = (
958963
E9256F642034E7DE00DE86E9 /* Base */,
964+
E9256F712039A7E900DE86E9 /* ru */,
959965
);
960966
name = Settings.storyboard;
961967
sourceTree = "<group>";
@@ -964,14 +970,32 @@
964970
isa = PBXVariantGroup;
965971
children = (
966972
E9256F6A2034E98700DE86E9 /* Base */,
973+
E9256F702039A7E900DE86E9 /* ru */,
967974
);
968975
name = Login.storyboard;
969976
sourceTree = "<group>";
970977
};
978+
E9256F7B2039B29A00DE86E9 /* Localizable.strings */ = {
979+
isa = PBXVariantGroup;
980+
children = (
981+
E9256F7A2039B29A00DE86E9 /* ru */,
982+
);
983+
name = Localizable.strings;
984+
sourceTree = "<group>";
985+
};
986+
E9256F802039B29D00DE86E9 /* InfoPlist.strings */ = {
987+
isa = PBXVariantGroup;
988+
children = (
989+
E9256F7F2039B29D00DE86E9 /* ru */,
990+
);
991+
name = InfoPlist.strings;
992+
sourceTree = "<group>";
993+
};
971994
E9452A4E20344834005BA34C /* Account.storyboard */ = {
972995
isa = PBXVariantGroup;
973996
children = (
974997
E9452A4D20344834005BA34C /* Base */,
998+
E9256F6E2039A7E800DE86E9 /* ru */,
975999
);
9761000
name = Account.storyboard;
9771001
sourceTree = "<group>";
@@ -983,6 +1007,7 @@
9831007
isa = XCBuildConfiguration;
9841008
buildSettings = {
9851009
ALWAYS_SEARCH_USER_PATHS = NO;
1010+
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
9861011
CLANG_ANALYZER_NONNULL = YES;
9871012
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
9881013
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@@ -1041,6 +1066,7 @@
10411066
isa = XCBuildConfiguration;
10421067
buildSettings = {
10431068
ALWAYS_SEARCH_USER_PATHS = NO;
1069+
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
10441070
CLANG_ANALYZER_NONNULL = YES;
10451071
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
10461072
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@@ -1134,6 +1160,7 @@
11341160
isa = XCBuildConfiguration;
11351161
buildSettings = {
11361162
ALWAYS_SEARCH_USER_PATHS = NO;
1163+
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
11371164
CLANG_ANALYZER_NONNULL = YES;
11381165
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
11391166
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";

Adamant.xcodeproj/xcshareddata/xcschemes/Adamant.Dev.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
buildConfiguration = "Debug"
5757
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
5858
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
59-
language = ""
59+
language = "ru"
6060
launchStyle = "0"
6161
useCustomWorkingDirectory = "NO"
6262
ignoresPersistentStateOnLaunch = "NO"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/* (No Comment) */
2+
"CFBundleDisplayName" = "Адамант";
3+
4+
/* (No Comment) */
5+
"CFBundleName" = "";
6+
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
/* Product name */
2+
"ADAMANT" = "АДАМАНТ";
3+
4+
/* Wallet page: Account section title. */
5+
"Account" = "Аккаунт";
6+
7+
/* ApiService: Account not found error, appending account info. */
8+
"Account not found: %@" = "Аккаунт не найден: %@";
9+
10+
/* Wallet page: Actions section title */
11+
"Actions" = "Действия";
12+
13+
/* Transfer: recipient address */
14+
"Address" = "Адрес";
15+
16+
/* New chat: Notify user that specified address (%@) not found */
17+
"Address %@ not found" = "Адрес %@ не найден";
18+
19+
/* Transfer: Address not found error */
20+
"Address not found" = "Такой адрес не найден";
21+
22+
/* Transaction details: amount row.
23+
Transfer: amount of adamant to transfer. */
24+
"Amount" = "Количество";
25+
26+
/* Config: Application Info section */
27+
"Application info" = "Приложение";
28+
29+
/* Transfer: logged user balance.
30+
Wallet page: Balance row title */
31+
"Balance" = "Баланс";
32+
33+
/* Transaction details: Block id row. */
34+
"Block" = "Блок";
35+
36+
/* Shared alert 'Cancel' button. Used anywhere */
37+
"Cancel" = "Отмена";
38+
39+
/* Transaction details: confirmations row. */
40+
"Confirmations" = "Подтверждений";
41+
42+
/* Shared alert notification: message about item copied to pasteboard. */
43+
"Copied to Pasteboard" = "Скопировано!";
44+
45+
/* Shared alert 'Copy' button. Used anywhere. Used for copy-paste info. */
46+
"Copy to Pasteboard" = "Копировать";
47+
48+
/* Transaction details: date row. */
49+
"Date" = "Дата";
50+
51+
/* Login: notify user that he is trying to login without a passphrase */
52+
"Enter a passphrase!" = "Введите пароль";
53+
54+
/* Chat: input bar: Estimated fee. */
55+
"Estimated fee: %f" = "Ориентировочная комиссия: %f";
56+
57+
/* Transaction details: fee row. */
58+
"Fee" = "Комиссия";
59+
60+
/* Transaction details: sender row. */
61+
"From" = "Отправитель";
62+
63+
/* Transfer: Tokens transfered successfully message */
64+
"Funds sended!" = "Токены переведены!";
65+
66+
/* Login: generate new passphrase button */
67+
"Generate new passphrase" = "Создать новый";
68+
69+
/* Transaction details: Id row. */
70+
"Id" = "Номер";
71+
72+
/* Wallet page: 'Invest in ICO' button */
73+
"Invest in ICO" = "Инвестировать в ICO";
74+
75+
/* Login: notify user that we a logging in. */
76+
"Logging in" = "Входим...";
77+
78+
/* Login: Login button
79+
Login: login with existing passphrase section */
80+
"Login" = "Вход";
81+
82+
/* Wallet page: 'Logout' button
83+
Wallet page: Confirm logout alert: Logout (Ok) button */
84+
"Logout" = "Выход";
85+
86+
/* Wallet page: Confirm logout alert */
87+
"Logout from %@?" = "Выйти из %@?";
88+
89+
/* Transfer: maximum amount to transfer: available account money substracting transfer fee. */
90+
"Max to transfer" = "Доступно для перевода";
91+
92+
/* Chat: Notify user that message cannot be empty */
93+
"Message is empty" = "Сообщение пусто!";
94+
95+
/* Chat: Message is too long */
96+
"Message is too long" = "Сообщение слишком длинное";
97+
98+
/* Login: Create new account section */
99+
"New account" = "Новый аккаунт";
100+
101+
/* ApiService: No connection message. Generally bad network. */
102+
"No connection" = "Нет соединения с интернетом";
103+
104+
/* Login: No network error. */
105+
"No connection with The Internet" = "Нет соединения с сетью";
106+
107+
/* Shared alert 'Ok' button. Used anywhere */
108+
"Ok" = "Ок";
109+
110+
/* Transaction details: 'Open transaction in explorer' row. */
111+
"Open in Explorer" = "Открыть в Explorer";
112+
113+
/* Transfer: Address validation error */
114+
"Please enter a valid recipient address" = "Введите корректный адрес получателя";
115+
116+
/* New chat: Notify user that he did enter invalid address */
117+
"Please specify valid recipient address" = "Неверный адрес";
118+
119+
/* Shared alert 'Save' button. Used anywhere */
120+
"Save" = "Сохранить";
121+
122+
/* Login: security alert, notify user that he must save his new passphrase */
123+
"Save the passphrase for new Wallet and Messenger account. There is no login to enter Wallet, only the passphrase needed. If lost, no way to recover it" = "Это пароль для нового Кошелька и Мессенджера. Сохраните его! Для входа в Кошелек не нужно логина, только этот пароль. Восстановление пароля невозможно.";
124+
125+
/* Transfer: Confirm transfer alert: Send tokens button */
126+
"Send" = "Отправить";
127+
128+
/* Transfer: Confirm transfer X tokens to Y message. Note two variables: at runtime %1$@ will be amount (with ADM suffix), and %2$@ will be recipient address. You can use address before amount with this so called 'position tokens'. */
129+
"Send %1$@ to %2$@?" = "Отправить %1$@ получателю %2$@?";
130+
131+
/* Transfer: Send button */
132+
"Send Funds" = "Отправить токены";
133+
134+
/* Wallet page: 'Send tokens' button */
135+
"Send Tokens" = "Отправить токены";
136+
137+
/* Transfer: Processing message */
138+
"Sending funds..." = "Отправляем токены...";
139+
140+
/* Shared alert 'Share' button. Used anywhere for presenting standart iOS 'Share' menu. */
141+
"Share" = "Поделиться";
142+
143+
/* Export transaction: 'Share transaction summary' button */
144+
"Summary" = "Сводка";
145+
146+
/* Login: a small hint for a user, that he can tap on passphrase to save it */
147+
"Tap to save" = "Нажмите для сохранения";
148+
149+
/* Transaction details: recipient row. */
150+
"To" = "Получатель";
151+
152+
/* Transfer: total amount of transaction: money to transfer adding fee */
153+
"Total" = "Итого";
154+
155+
/* Transfer: transfer fee */
156+
"Transaction fee" = "Комиссия";
157+
158+
/* Transfer: 'Transfer info' section */
159+
"Transfer Info" = "Перевод";
160+
161+
/* Unknown internal error */
162+
"Unknown error" = "Неизвестная ошибка";
163+
164+
/* Config: Version row */
165+
"Version" = "Версия";
166+
167+
/* Wallet page: Wallet section title */
168+
"Wallet" = "Кошелёк";
169+
170+
/* Login: user typed in wrong passphrase. */
171+
"Wrong passphrase!" = "Неправильный пароль";
172+
173+
/* Chat: Notify user that he doesn't have money to pay a message fee */
174+
"You don't have enough money to send a message" = "Недостаточно токенов для отправки сообщения";
175+
176+
/* Transfer: Amount is hiegher that user's total money notification */
177+
"You don't have that much money" = "У вас нет столько токенов";
178+
179+
/* New chat: Notify user that he can't start chat with himself */
180+
"You don't need an encrypted anonymous chat to talk to yourself" = "Вам не нужен анонимный чат, чтобы говорить с самим собой";
181+
182+
/* Transfer: Amount is zero, or even negative notification */
183+
"You should send more money" = "Нужно отправить больше токенов";
184+
185+
/* Transfer: 'Your wallet' section */
186+
"Your wallet" = "Ваш кошелёк";
187+
188+
/* Transfer: recipient address placeholder */
189+
"of the recipient" = "получателя";
190+
191+
/* Login: Passphrase placeholder */
192+
"passphrase" = "Пароль";
193+
194+
/* Transfer: transfer amount placeholder */
195+
"to send" = "для перевода";
196+

Adamant/Helpers/String+localized.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import Foundation
1111
extension String {
1212
public struct adamantLocalized {
1313
struct shared {
14-
static let productName = NSLocalizedString("Adamant", comment: "Product name")
14+
static let productName = NSLocalizedString("ADAMANT", comment: "Product name")
1515

1616
private init() {}
1717
}

0 commit comments

Comments
 (0)