Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit 356ad57

Browse files
committed
new localization method
1 parent 7ff1f73 commit 356ad57

8 files changed

Lines changed: 1044 additions & 103 deletions

File tree

Natives/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ add_executable(PojavLauncher
178178
input_bridge_v3.m
179179
ios_uikit_bridge.m
180180
utils.m
181+
PLLocalization.m
182+
PLLocalizationUtils.m
181183
)
182184

183185
if("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Linux|^GNU$|Android")

Natives/PLLocalization.h

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// PLLocalization.h
2+
#ifndef PLLocalization_h
3+
#define PLLocalization_h
4+
5+
#import <Foundation/Foundation.h>
6+
7+
/**
8+
* Современный менеджер локализации для PojavLauncher.
9+
* Разработан для обеспечения надежного доступа к строкам локализации
10+
* с защитой от ошибок и кэшированием для производительности.
11+
*/
12+
@interface PLLocalization : NSObject
13+
14+
/**
15+
* Получить локализованную строку.
16+
* @param key Ключ локализации
17+
* @param defaultValue Значение по умолчанию, если строка не найдена
18+
* @return Локализованную строку или defaultValue
19+
*/
20+
+ (NSString *)stringForKey:(NSString *)key defaultValue:(NSString *)defaultValue;
21+
22+
/**
23+
* Метод-обертка для поддержания обратной совместимости с текущим кодом
24+
* @param key Ключ локализации
25+
* @param comment Комментарий (используется как fallback)
26+
* @return Локализованную строку
27+
*/
28+
+ (NSString *)localizeKey:(NSString *)key comment:(NSString *)comment;
29+
30+
/**
31+
* Принудительно перезагрузить все кэши локализаций
32+
*/
33+
+ (void)reloadLocalizations;
34+
35+
/**
36+
* Проверить и исправить файл локализации
37+
* @param path Путь к файлу локализации
38+
* @return YES если файл валиден или был исправлен, NO если не удалось исправить
39+
*/
40+
+ (BOOL)validateAndFixLocalizationFile:(NSString *)path;
41+
42+
/**
43+
* Получить доступные языки
44+
* @return Массив доступных языковых кодов
45+
*/
46+
+ (NSArray<NSString *> *)availableLanguages;
47+
48+
/**
49+
* Получить текущий язык
50+
* @return Код текущего языка
51+
*/
52+
+ (NSString *)currentLanguage;
53+
54+
/**
55+
* Добавить резервную локализованную строку
56+
* @param value Значение строки
57+
* @param key Ключ строки
58+
*/
59+
+ (void)registerFallbackString:(NSString *)value forKey:(NSString *)key;
60+
61+
/**
62+
* Экспортировать отсутствующие ключи для перевода
63+
* @param language Код языка
64+
* @return Путь к созданному файлу с ключами или nil при ошибке
65+
*/
66+
+ (NSString *)exportMissingKeysForLanguage:(NSString *)language;
67+
68+
/**
69+
* Безопасный метод форматирования строк
70+
*/
71+
+ (NSString *)stringWithFormat:(NSString *)format, ...;
72+
73+
@end
74+
75+
// Макрос для упрощенного доступа к локализованным строкам
76+
#define PLLocalizedString(key, comment) [PLLocalization stringForKey:(key) defaultValue:(comment)]
77+
78+
#endif /* PLLocalization_h */

0 commit comments

Comments
 (0)