diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java index cb7d51b15..5ae5a189a 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java @@ -148,4 +148,5 @@ public class RegistrationConstants { public static final String DEFAULT_HOST_IP = "mosip.registration.audit_default_host_ip"; public static final String DEFAULT_HOST_NAME = "mosip.registration.audit_default_host_name"; public static final String REG_PAK_MAX_CNT_APPRV_LIMIT = "mosip.registration.reg_pak_max_cnt_apprv_limit"; + public static final String PACKET_STORE_LOCATION = "mosip.registration.registration_packet_store_location"; } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java index fd47845f9..01470f3c6 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java @@ -254,6 +254,10 @@ public String getCachedStringFieldsToRetainOnPridFetch(){ public int getCachedIntRegMaxCountApproveLimit(){ return getCachedIntegerGlobalParam(RegistrationConstants.REG_PAK_MAX_CNT_APPRV_LIMIT); } + public String getCachedStringPacketStoreLocation() { + return globalParamMap.get(RegistrationConstants.PACKET_STORE_LOCATION); + } + /** * Refresh configuration cache by merging global params with local preferences */ diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java index c18a8f4e8..86e595448 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java @@ -23,6 +23,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; +import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; @@ -91,6 +92,7 @@ import io.mosip.registration.packetmanager.spi.PacketWriterService; import io.mosip.registration.packetmanager.util.DateUtils; import io.mosip.registration.packetmanager.util.PacketManagerConstant; +import io.mosip.registration.packetmanager.util.StorageUtils; import lombok.NonNull; @Singleton @@ -643,14 +645,9 @@ public List> getAudits() { private void doPreChecksBeforeRegistration(CenterMachineDto centerMachineDto) throws Exception { //free space validation - int minSpaceRequiredMB = globalParamRepository.getCachedIntegerDiskSpaceSize(); - if (minSpaceRequiredMB == 0) { - minSpaceRequiredMB = DEFAULT_MIN_SPACE_REQUIRED_MB; + if (validatingDiskSpace()) { + throw new ClientCheckedException("PAK_DISK_SPACE_LOW"); } - - long externalSpace = context.getExternalCacheDir().getUsableSpace(); - if ((externalSpace / (1024 * 1024)) < minSpaceRequiredMB) - throw new ClientCheckedException(context, R.string.err_006); //is machine and center active if (centerMachineDto == null || !centerMachineDto.getCenterStatus() || !centerMachineDto.getMachineStatus()) @@ -677,6 +674,35 @@ private void doPreChecksBeforeRegistration(CenterMachineDto centerMachineDto) th } } + private boolean validatingDiskSpace() { + int minSpaceRequiredMB = globalParamRepository.getCachedIntegerDiskSpaceSize(); + if (minSpaceRequiredMB <= 0) { + minSpaceRequiredMB = DEFAULT_MIN_SPACE_REQUIRED_MB; + } + long allowedDiskSpaceSizeInBytes = (long) minSpaceRequiredMB * 1024 * 1024; + + File actualDiskSpace = StorageUtils.getPacketStorageDir(context); + + if (!actualDiskSpace.exists() && !actualDiskSpace.mkdirs()) { + Log.e(TAG, "Packet store directory not available: " + actualDiskSpace.getAbsolutePath()); + return true; // treat as low space/unavailable + } + if (!actualDiskSpace.isDirectory() || !actualDiskSpace.canWrite()) { + Log.e(TAG, "Packet store directory not writable: " + actualDiskSpace.getAbsolutePath()); + return true; // treat as low space/unavailable + } + + long usableSpace = actualDiskSpace.getUsableSpace(); + if (usableSpace == 0) { + Log.e(TAG, "Usable space is 0 for path: " + actualDiskSpace.getAbsolutePath()); + return true; // treat as low space/unavailable + } + + return usableSpace < allowedDiskSpaceSizeInBytes; + } + + + private byte[] convertImageToPDF(List images) { try (PDDocument pdDocument = new PDDocument(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java index 9050acc33..08e3e07b2 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java @@ -55,6 +55,7 @@ import io.mosip.registration.packetmanager.util.ConfigService; import io.mosip.registration.keymanager.util.CryptoUtil; import io.mosip.registration.packetmanager.util.PacketKeeper; +import io.mosip.registration.packetmanager.util.StorageUtils; @@ -486,22 +487,6 @@ private String validateFilename(String filename, String intendedDir) throws IOEx private void initPreRegAdapter(Context context) { this.appContext = context; - - String state = Environment.getExternalStorageState(); - if (Environment.MEDIA_MOUNTED.equals(state)) { - String location = ConfigService.getProperty("objectstore.base.location", context); - - File file = new File(Environment.getExternalStorageDirectory() + SEPARATOR + location); - - if (!file.exists()) { - file.mkdirs(); - } - - BASE_LOCATION = file.getAbsolutePath(); - } else { - Log.e(TAG, "External Storage not mounted"); - } - Log.i(TAG, "initLocalClientCryptoService: Initialization call successful"); } } diff --git a/android/packetmanager/src/main/assets/packetmanagerconfig.properties b/android/packetmanager/src/main/assets/packetmanagerconfig.properties index ca1856934..d355cadd7 100644 --- a/android/packetmanager/src/main/assets/packetmanagerconfig.properties +++ b/android/packetmanager/src/main/assets/packetmanagerconfig.properties @@ -1,6 +1,6 @@ #----------------------- Packet Manager -------------------------------------------------- #base location -objectstore.base.location=Documents +objectstore.base.location=packets #crypto name objectstore.crypto.name=ObjectStoreCryptoName; objectstore.adapter.name=PosixAdapter diff --git a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java index be67312a3..4fcafc2ba 100644 --- a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java +++ b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java @@ -35,8 +35,8 @@ import javax.inject.Singleton; import io.mosip.registration.packetmanager.spi.ObjectAdapterService; -import io.mosip.registration.packetmanager.util.ConfigService; import io.mosip.registration.packetmanager.util.ObjectStoreUtil; +import io.mosip.registration.packetmanager.util.StorageUtils; /** * @Author Anshul Vanawat @@ -72,22 +72,13 @@ public PosixAdapterServiceImpl(Context appContext, IPacketCryptoService iPacketC private void initPosixAdapterService(Context context) { this.appContext = context; - - String state = Environment.getExternalStorageState(); - if (Environment.MEDIA_MOUNTED.equals(state)) { - String location = ConfigService.getProperty("objectstore.base.location", context); - - File file = new File(Environment.getExternalStorageDirectory() + SEPARATOR + location); - - if (!file.exists()) { - file.mkdirs(); - } - - BASE_LOCATION = file.getAbsolutePath(); + File baseDir = StorageUtils.getPacketStorageDir(context); + if (baseDir.exists() || baseDir.mkdirs()) { + BASE_LOCATION = baseDir.getAbsolutePath(); } else { - Log.e(TAG, "External Storage not mounted"); + Log.e(TAG, "Failed to initialize packet storage directory: " + baseDir.getAbsolutePath()); + BASE_LOCATION = null; } - Log.i(TAG, "initLocalClientCryptoService: Initialization call successful"); } @Override @@ -218,9 +209,16 @@ private Map getAllExistingEntries(InputStream p private void createContainerZipWithSubPacket(String account, String container, String source, String process, String objectName, InputStream data) throws IOException { - String state = Environment.getExternalStorageState(); - //external storage availability check + if (BASE_LOCATION == null) { + Log.e(TAG, "BASE_LOCATION is not initialized"); + return; + } + + File baseDir = new File(BASE_LOCATION); + String state = Environment.getExternalStorageState(baseDir); + //storage availability check if (!Environment.MEDIA_MOUNTED.equals(state)) { + Log.e(TAG, "External storage not mounted. State: " + state + ", Path: " + baseDir.getAbsolutePath()); return; } diff --git a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java new file mode 100644 index 000000000..7134caba0 --- /dev/null +++ b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java @@ -0,0 +1,74 @@ +package io.mosip.registration.packetmanager.util; + +import android.content.Context; +import android.os.Environment; +import android.util.Log; + +import java.io.File; + +public class StorageUtils { + private static final String TAG = "StorageUtils"; + + public static File getPacketStorageDir(Context context) { + String location = ConfigService.getProperty("objectstore.base.location", context); + if (location == null) { + location = "packets"; + } + + // 1. Try SD card Documents folder + File baseDir = getSDCardDir(context, location); + if (baseDir != null && ensureDirWritable(baseDir)) { + return baseDir; + } + + // 2. Try Primary Shared Documents folder (Legacy/Scoped Storage might restrict this) + baseDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), location); + if (ensureDirWritable(baseDir)) { + return baseDir; + } + + // 3. Fallback to App-private external storage + baseDir = context.getExternalFilesDir(location); + if (baseDir != null && ensureDirWritable(baseDir)) { + return baseDir; + } + + // 4. Ultimate fallback to App internal storage + baseDir = new File(context.getFilesDir(), location); + ensureDirWritable(baseDir); + return baseDir; + } + + private static File getSDCardDir(Context context, String location) { + File[] externalFilesDirs = context.getExternalFilesDirs(null); + if (externalFilesDirs != null) { + for (File file : externalFilesDirs) { + if (file != null && Environment.isExternalStorageRemovable(file)) { + try { + String path = file.getAbsolutePath(); + int androidIndex = path.indexOf("/Android/data/"); + if (androidIndex != -1) { + String sdRoot = path.substring(0, androidIndex); + return new File(new File(sdRoot, "Documents"), location); + } + } catch (Exception e) { + Log.e(TAG, "Error calculating SD root: " + file.getAbsolutePath(), e); + } + } + } + } + return null; + } + + private static boolean ensureDirWritable(File dir) { + try { + if (!dir.exists() && !dir.mkdirs()) { + return false; + } + return dir.canWrite(); + } catch (Exception e) { + Log.e(TAG, "Error ensuring directory writability: " + dir.getAbsolutePath(), e); + return false; + } + } +} diff --git a/assets/l10n/app_ar.arb b/assets/l10n/app_ar.arb index 97383ec99..9ae5a0df3 100644 --- a/assets/l10n/app_ar.arb +++ b/assets/l10n/app_ar.arb @@ -302,7 +302,7 @@ "logout_success": "لقد تم تسجيل بنجاح!", "logout_failure": "حدث خطأ ما، يرجى المحاولة مرة أخرى بعد مرور بعض الوقت", "go_to_home": "اذهب إلى المنزل", - "errors": "{messages, select, REG_TRY_AGAIN{فشل تسجيل الدخول. حاول مرة أخرى!} REG_INVALID_REQUEST{كلمة المرور غير صحيحة!} REG_MACHINE_NOT_FOUND{لم يتم تسجيل هذا الجهاز بعد. يرجى التواصل مع المسؤول للحصول على المساعدة!} REG_NETWORK_ERROR{فشل تسجيل الدخول. تحقق من اتصال الشبكة!} REG_CRED_EXPIRED{لم يتم العثور على بيانات الاعتماد أو انتهت صلاحيتها. يرجى محاولة تسجيل الدخول عبر الإنترنت!} REG_MACHINE_INACTIVE{الآلة غير نشطة!} REG_CENTER_INACTIVE{المركز غير نشط!} REG_LOGIN_LOCKED{تم الوصول إلى الحد الأقصى لمحاولة تسجيل الدخول. حاول مرة أخرى لاحقا!} KER_SYN_AUTH_001{تعذر الحصول على رمز المصادقة!} PAK_APPRVL_MAX_TIME{الإجراء المطلوب: لقد تجاوزت الحزم المسجلة المعلقة وقت الموافقة المسموح به. يرجى مسح التراكم للمتابعة.} PAK_UPLOAD_MAX_TIME{الإجراء المطلوب: تحميل الحزم أو تصديرها إلى الخادم قبل متابعة التسجيل.} PAK_UPLOAD_MAX_COUNT{الإجراء المطلوب: تم الوصول إلى الحد الأقصى للحزمة. الرجاء تصدير أو تحميل الحزم الموجودة قبل إنشاء تسجيلات جديدة.} REG_PKT_APPRVL_CNT_EXCEED{تم الوصول إلى الحد الأقصى لعدد حزم التسجيل المعلقة للموافقة على العميل. يرجى الموافقة على الحزم أو رفضها قبل متابعة هذا التسجيل.} other{'Some error occurred!'}}", + "errors": "{messages, select, REG_TRY_AGAIN{فشل تسجيل الدخول. حاول مرة أخرى!} REG_INVALID_REQUEST{كلمة المرور غير صحيحة!} REG_MACHINE_NOT_FOUND{لم يتم تسجيل هذا الجهاز بعد. يرجى التواصل مع المسؤول للحصول على المساعدة!} REG_NETWORK_ERROR{فشل تسجيل الدخول. تحقق من اتصال الشبكة!} REG_CRED_EXPIRED{لم يتم العثور على بيانات الاعتماد أو انتهت صلاحيتها. يرجى محاولة تسجيل الدخول عبر الإنترنت!} REG_MACHINE_INACTIVE{الآلة غير نشطة!} REG_CENTER_INACTIVE{المركز غير نشط!} REG_LOGIN_LOCKED{تم الوصول إلى الحد الأقصى لمحاولة تسجيل الدخول. حاول مرة أخرى لاحقا!} KER_SYN_AUTH_001{تعذر الحصول على رمز المصادقة!} PAK_APPRVL_MAX_TIME{الإجراء المطلوب: لقد تجاوزت الحزم المسجلة المعلقة وقت الموافقة المسموح به. يرجى مسح التراكم للمتابعة.} PAK_UPLOAD_MAX_TIME{الإجراء المطلوب: تحميل الحزم أو تصديرها إلى الخادم قبل متابعة التسجيل.} PAK_UPLOAD_MAX_COUNT{الإجراء المطلوب: تم الوصول إلى الحد الأقصى للحزمة. الرجاء تصدير أو تحميل الحزم الموجودة قبل إنشاء تسجيلات جديدة.} PAK_DISK_SPACE_LOW{الحد الأدنى من المساحة المطلوبة غير متوفر لإنشاء الحزمة.} REG_PKT_APPRVL_CNT_EXCEED{تم الوصول إلى الحد الأقصى لعدد حزم التسجيل المعلقة للموافقة على العميل. يرجى الموافقة على الحزم أو رفضها قبل متابعة هذا التسجيل.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_en.arb b/assets/l10n/app_en.arb index 119834df3..5463fe9a3 100644 --- a/assets/l10n/app_en.arb +++ b/assets/l10n/app_en.arb @@ -302,7 +302,7 @@ "logout_success": "You have been successfully logged out!", "logout_failure": "Something went wrong, please try again after some time", "go_to_home": "Go To Home", - "errors": "{messages, select, REG_TRY_AGAIN{Login Failed. Try Again!} REG_INVALID_REQUEST{Password incorrect!} REG_MACHINE_NOT_FOUND{This device has not been onboarded yet. Please reach out to your administrator for assistance!} REG_NETWORK_ERROR{Login failed. Check network connection!} REG_CRED_EXPIRED{Credentials not found or are expired. Please try online login!} REG_MACHINE_INACTIVE{Machine is not active!} REG_CENTER_INACTIVE{Center is not active!} REG_LOGIN_LOCKED{Maximum login attempt limit reached. Try again later!} KER_SYN_AUTH_001{Unable to get Authentication Token!} PAK_APPRVL_MAX_TIME{Action required: Pending registered packets have exceeded the allowed approval time. Please clear the backlog to continue.} PAK_UPLOAD_MAX_TIME{Action required: Upload or export the packets to the server before proceeding with registration.} PAK_UPLOAD_MAX_COUNT{Action required: Packet limit reached. Please export or upload existing packets before creating new registrations.} REG_PKT_APPRVL_CNT_EXCEED{Maximum number of registration packets pending approval on client reached. Please approve or reject packets before proceeding with this registration.} other{'Some error occurred!'}}", + "errors": "{messages, select, REG_TRY_AGAIN{Login Failed. Try Again!} REG_INVALID_REQUEST{Password incorrect!} REG_MACHINE_NOT_FOUND{This device has not been onboarded yet. Please reach out to your administrator for assistance!} REG_NETWORK_ERROR{Login failed. Check network connection!} REG_CRED_EXPIRED{Credentials not found or are expired. Please try online login!} REG_MACHINE_INACTIVE{Machine is not active!} REG_CENTER_INACTIVE{Center is not active!} REG_LOGIN_LOCKED{Maximum login attempt limit reached. Try again later!} KER_SYN_AUTH_001{Unable to get Authentication Token!} PAK_APPRVL_MAX_TIME{Action required: Pending registered packets have exceeded the allowed approval time. Please clear the backlog to continue.} PAK_UPLOAD_MAX_TIME{Action required: Upload or export the packets to the server before proceeding with registration.} PAK_UPLOAD_MAX_COUNT{Action required: Packet limit reached. Please export or upload existing packets before creating new registrations.} PAK_DISK_SPACE_LOW{Minimum required space is not available to create the packet.} REG_PKT_APPRVL_CNT_EXCEED{Maximum number of registration packets pending approval on client reached. Please approve or reject packets before proceeding with this registration.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_fr.arb b/assets/l10n/app_fr.arb index 44d1176a7..566dfe778 100644 --- a/assets/l10n/app_fr.arb +++ b/assets/l10n/app_fr.arb @@ -302,7 +302,7 @@ "logout_success": "Vous avez été déconnecté avec succès!", "logout_failure": "Quelque chose s'est mal passé, veuillez réessayer après un certain temps", "go_to_home": "Aller à la maison", - "errors": "{messages, select, REG_TRY_AGAIN{Echec de la connexion.. Réessayez!} REG_INVALID_REQUEST{Mot de passe incorrect!} REG_MACHINE_NOT_FOUND{Cet appareil n’a pas encore été intégré. Veuillez contacter votre administrateur pour obtenir de l’aide !} REG_NETWORK_ERROR{Échec de la connexion. Vérifiez la connexion réseau!} REG_CRED_EXPIRED{Les informations d’identification sont introuvables ou ont expiré. S’il vous plaît essayer la connexion en ligne!} REG_MACHINE_INACTIVE{La machine n'est pas active!} REG_CENTER_INACTIVE{Le centre n'est pas actif!} REG_LOGIN_LOCKED{Limite maximale de tentatives de connexion atteinte. Réessayez plus tard!} KER_SYN_AUTH_001{Impossible d’obtenir le jeton d’authentification!} PAK_APPRVL_MAX_TIME{Action requise : les paquets enregistrés en attente ont dépassé le délai d'approbation autorisé. Veuillez éliminer l'arriéré pour continuer.} PAK_UPLOAD_MAX_TIME{Action requise : Téléchargez ou exportez les paquets vers le serveur avant de procéder à l'enregistrement.} PAK_UPLOAD_MAX_COUNT{Action requise : limite de paquets atteinte. Veuillez exporter ou télécharger les paquets existants avant de créer de nouvelles inscriptions.} REG_PKT_APPRVL_CNT_EXCEED{Le nombre maximum de paquets d'enregistrement en attente d'approbation sur le client a été atteint. Veuillez approuver ou rejeter les paquets avant de procéder à cette inscription.} other{'Some error occurred!'}}", + "errors": "{messages, select, REG_TRY_AGAIN{Echec de la connexion.. Réessayez!} REG_INVALID_REQUEST{Mot de passe incorrect!} REG_MACHINE_NOT_FOUND{Cet appareil n’a pas encore été intégré. Veuillez contacter votre administrateur pour obtenir de l’aide !} REG_NETWORK_ERROR{Échec de la connexion. Vérifiez la connexion réseau!} REG_CRED_EXPIRED{Les informations d’identification sont introuvables ou ont expiré. S’il vous plaît essayer la connexion en ligne!} REG_MACHINE_INACTIVE{La machine n'est pas active!} REG_CENTER_INACTIVE{Le centre n'est pas actif!} REG_LOGIN_LOCKED{Limite maximale de tentatives de connexion atteinte. Réessayez plus tard!} KER_SYN_AUTH_001{Impossible d’obtenir le jeton d’authentification!} PAK_APPRVL_MAX_TIME{Action requise : les paquets enregistrés en attente ont dépassé le délai d'approbation autorisé. Veuillez éliminer l'arriéré pour continuer.} PAK_UPLOAD_MAX_TIME{Action requise : Téléchargez ou exportez les paquets vers le serveur avant de procéder à l'enregistrement.} PAK_UPLOAD_MAX_COUNT{Action requise : limite de paquets atteinte. Veuillez exporter ou télécharger les paquets existants avant de créer de nouvelles inscriptions.} PAK_DISK_SPACE_LOW{L'espace minimum requis n'est pas disponible pour créer le paquet.} REG_PKT_APPRVL_CNT_EXCEED{Le nombre maximum de paquets d'enregistrement en attente d'approbation sur le client a été atteint. Veuillez approuver ou rejeter les paquets avant de procéder à cette inscription.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_hi.arb b/assets/l10n/app_hi.arb index 9f358fc72..751d0ff46 100644 --- a/assets/l10n/app_hi.arb +++ b/assets/l10n/app_hi.arb @@ -302,7 +302,7 @@ "logout_success": "आप सफलता पूर्वक लॉगआउट कर चुके हैं!", "logout_failure": "कुछ गलती हो गई है, कृपया कुछ समय बाद पुनः प्रयास करें", "go_to_home": "होम पर जाएं", - "errors": "{messages, select, REG_TRY_AGAIN{लॉगिन विफल रहा। फिर कोशिश करो!} REG_INVALID_REQUEST{पासवर्ड गलत है!} REG_MACHINE_NOT_FOUND{इस डिवाइस का ऑनबोर्डिंग अभी तक नहीं हुआ है। सहायता के लिए कृपया अपने प्रशासक से संपर्क करें!} REG_NETWORK_ERROR{लॉगिन विफल रहा। नेटवर्क कनेक्शन की जाँच करें!} REG_CRED_EXPIRED{क्रेडेंशियल्स नहीं मिले या समय सीमा समाप्त हो गई है. ऑनलाइन लॉगिन का प्रयास करें!} REG_MACHINE_INACTIVE{मशीन सक्रिय नहीं है!} REG_CENTER_INACTIVE{केंद्र सक्रिय नहीं है!} REG_LOGIN_LOCKED{अधिकतम लॉगिन प्रयास सीमा पूरी हो गई. बाद में पुन: प्रयास!} KER_SYN_AUTH_001{प्रमाणीकरण टोकन प्राप्त करने में असमर्थ!} PAK_APPRVL_MAX_TIME{कार्रवाई आवश्यक: लंबित पंजीकृत पैकेट स्वीकृत अनुमोदन समय से अधिक हो गए हैं। कृपया जारी रखने के लिए बैकलॉग साफ़ करें।} PAK_UPLOAD_MAX_TIME{कार्रवाई आवश्यक: पंजीकरण के साथ आगे बढ़ने से पहले पैकेट को सर्वर पर अपलोड या निर्यात करें।} PAK_UPLOAD_MAX_COUNT{कार्रवाई आवश्यक: पैकेट की सीमा पूरी हो गई. कृपया नए पंजीकरण बनाने से पहले मौजूदा पैकेट निर्यात या अपलोड करें।} REG_PKT_APPRVL_CNT_EXCEED{क्लाइंट पर अनुमोदन के लिए लंबित पंजीकरण पैकेट की अधिकतम संख्या पूरी हो गई है। कृपया इस पंजीकरण के साथ आगे बढ़ने से पहले पैकेट को स्वीकृत या अस्वीकार करें।} other{'Some error occurred!'}}", +"errors": "{messages, select, REG_TRY_AGAIN{लॉगिन विफल रहा। फिर कोशिश करो!} REG_INVALID_REQUEST{पासवर्ड गलत है!} REG_MACHINE_NOT_FOUND{इस डिवाइस का ऑनबोर्डिंग अभी तक नहीं हुआ है। सहायता के लिए कृपया अपने प्रशासक से संपर्क करें!} REG_NETWORK_ERROR{लॉगिन विफल रहा। नेटवर्क कनेक्शन की जाँच करें!} REG_CRED_EXPIRED{क्रेडेंशियल्स नहीं मिले या समय सीमा समाप्त हो गई है. ऑनलाइन लॉगिन का प्रयास करें!} REG_MACHINE_INACTIVE{मशीन सक्रिय नहीं है!} REG_CENTER_INACTIVE{केंद्र सक्रिय नहीं है!} REG_LOGIN_LOCKED{अधिकतम लॉगिन प्रयास सीमा पूरी हो गई. बाद में पुन: प्रयास!} KER_SYN_AUTH_001{प्रमाणीकरण टोकन प्राप्त करने में असमर्थ!} PAK_APPRVL_MAX_TIME{कार्रवाई आवश्यक: लंबित पंजीकृत पैकेट स्वीकृत अनुमोदन समय से अधिक हो गए हैं। कृपया जारी रखने के लिए बैकलॉग साफ़ करें।} PAK_UPLOAD_MAX_TIME{कार्रवाई आवश्यक: पंजीकरण के साथ आगे बढ़ने से पहले पैकेट को सर्वर पर अपलोड या निर्यात करें।} PAK_UPLOAD_MAX_COUNT{कार्रवाई आवश्यक: पैकेट की सीमा पूरी हो गई. कृपया नए पंजीकरण बनाने से पहले मौजूदा पैकेट निर्यात या अपलोड करें।} PAK_DISK_SPACE_LOW{पैकेट बनाने के लिए न्यूनतम आवश्यक स्थान उपलब्ध नहीं है।} REG_PKT_APPRVL_CNT_EXCEED{क्लाइंट पर अनुमोदन के लिए लंबित पंजीकरण पैकेट की अधिकतम संख्या पूरी हो गई है। कृपया इस पंजीकरण के साथ आगे बढ़ने से पहले पैकेट को स्वीकृत या अस्वीकार करें।} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_kn.arb b/assets/l10n/app_kn.arb index 30cb3f1c3..920fd5c59 100644 --- a/assets/l10n/app_kn.arb +++ b/assets/l10n/app_kn.arb @@ -302,7 +302,7 @@ "logout_success": "ನೀವು ಯಶಸ್ವಿಯಾಗಿ ಲಾಗ್ ಔಟ್ ಆಗಿರುವಿರಿ!", "logout_failure": "ಏನೋ ತಪ್ಪಾಗಿದೆ, ದಯವಿಟ್ಟು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ", "go_to_home": "ಮನೆಗೆ ಹೋಗು", - "errors": "{messages, select, REG_TRY_AGAIN{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು!} REG_INVALID_REQUEST{ಪಾಸ್ ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ!} REG_MACHINE_NOT_FOUND{ಈ ಸಾಧನವನ್ನು ಇನ್ನೂ ಆನ್‌ಬೋರ್ಡ್ ಮಾಡಿಲ್ಲ. ಸಹಾಯಕ್ಕಾಗಿ ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ!} REG_NETWORK_ERROR{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕ ಪರಿಶೀಲಿಸಿ!} REG_CRED_EXPIRED{ರುಜುವಾತುಗಳು ಸಿಗಲಿಲ್ಲ ಅಥವಾ ಅವಧಿ ಮೀರಿದವು. ದಯವಿಟ್ಟು ಆನ್ ಲೈನ್ ಲಾಗಿನ್ ಪ್ರಯತ್ನಿಸಿ!} REG_MACHINE_INACTIVE{ಯಂತ್ರ ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_CENTER_INACTIVE{ಕೇಂದ್ರವು ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_LOGIN_LOCKED{ಗರಿಷ್ಠ ಲಾಗಿನ್ ಪ್ರಯತ್ನದ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!} KER_SYN_AUTH_001{ದೃಢೀಕರಣ ಟೋಕನ್ ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ!} PAK_APPRVL_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಬಾಕಿ ಉಳಿದಿರುವ ನೋಂದಾಯಿತ ಪ್ಯಾಕೆಟ್‌ಗಳು ಅನುಮತಿಸಲಾದ ಅನುಮೋದನೆ ಸಮಯವನ್ನು ಮೀರಿದೆ. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಬ್ಯಾಕ್‌ಲಾಗ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ.} PAK_UPLOAD_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ನೋಂದಣಿಯೊಂದಿಗೆ ಮುಂದುವರಿಯುವ ಮೊದಲು ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ ಅಥವಾ ರಫ್ತು ಮಾಡಿ.} PAK_UPLOAD_MAX_COUNT{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಪ್ಯಾಕೆಟ್ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ಹೊಸ ನೋಂದಣಿಗಳನ್ನು ರಚಿಸುವ ಮೊದಲು ದಯವಿಟ್ಟು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ರಫ್ತು ಮಾಡಿ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ.} REG_PKT_APPRVL_CNT_EXCEED{ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಅನುಮೋದನೆಗಾಗಿ ಬಾಕಿ ಉಳಿದಿರುವ ನೋಂದಣಿ ಪ್ಯಾಕೆಟ್‌ಗಳ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ತಲುಪಿದೆ. ಈ ನೋಂದಣಿಯೊಂದಿಗೆ ಮುಂದುವರಿಸುವ ಮೊದಲು ದಯವಿಟ್ಟು ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಅನುಮೋದಿಸಿ ಅಥವಾ ತಿರಸ್ಕರಿಸಿ.} other{'Some error occurred!'}}", +"errors": "{messages, select, REG_TRY_AGAIN{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು!} REG_INVALID_REQUEST{ಪಾಸ್ ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ!} REG_MACHINE_NOT_FOUND{ಈ ಸಾಧನವನ್ನು ಇನ್ನೂ ಆನ್‌ಬೋರ್ಡ್ ಮಾಡಿಲ್ಲ. ಸಹಾಯಕ್ಕಾಗಿ ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ!} REG_NETWORK_ERROR{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕ ಪರಿಶೀಲಿಸಿ!} REG_CRED_EXPIRED{ರುಜುವಾತುಗಳು ಸಿಗಲಿಲ್ಲ ಅಥವಾ ಅವಧಿ ಮೀರಿದವು. ದಯವಿಟ್ಟು ಆನ್ ಲೈನ್ ಲಾಗಿನ್ ಪ್ರಯತ್ನಿಸಿ!} REG_MACHINE_INACTIVE{ಯಂತ್ರ ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_CENTER_INACTIVE{ಕೇಂದ್ರವು ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_LOGIN_LOCKED{ಗರಿಷ್ಠ ಲಾಗಿನ್ ಪ್ರಯತ್ನದ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!} KER_SYN_AUTH_001{ದೃಢೀಕರಣ ಟೋಕನ್ ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ!} PAK_APPRVL_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಬಾಕಿ ಉಳಿದಿರುವ ನೋಂದಾಯಿತ ಪ್ಯಾಕೆಟ್‌ಗಳು ಅನುಮತಿಸಲಾದ ಅನುಮೋದನೆ ಸಮಯವನ್ನು ಮೀರಿದೆ. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಬ್ಯಾಕ್‌ಲಾಗ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ.} PAK_UPLOAD_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ನೋಂದಣಿಯೊಂದಿಗೆ ಮುಂದುವರಿಯುವ ಮೊದಲು ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ ಅಥವಾ ರಫ್ತು ಮಾಡಿ.} PAK_UPLOAD_MAX_COUNT{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಪ್ಯಾಕೆಟ್ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ಹೊಸ ನೋಂದಣಿಗಳನ್ನು ರಚಿಸುವ ಮೊದಲು ದಯವಿಟ್ಟು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ರಫ್ತು ಮಾಡಿ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ.} PAK_DISK_SPACE_LOW{ಪ್ಯಾಕೆಟ್ ರಚಿಸಲು ಅಗತ್ಯವಿರುವ ಕನಿಷ್ಟ ಸ್ಥಳಾವಕಾಶ ಲಭ್ಯವಿಲ್ಲ.} REG_PKT_APPRVL_CNT_EXCEED{ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಅನುಮೋದನೆಗಾಗಿ ಬಾಕಿ ಉಳಿದಿರುವ ನೋಂದಣಿ ಪ್ಯಾಕೆಟ್‌ಗಳ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ತಲುಪಿದೆ. ಈ ನೋಂದಣಿಯೊಂದಿಗೆ ಮುಂದುವರಿಸುವ ಮೊದಲು ದಯವಿಟ್ಟು ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಅನುಮೋದಿಸಿ ಅಥವಾ ತಿರಸ್ಕರಿಸಿ.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_ta.arb b/assets/l10n/app_ta.arb index 39423968f..eee216deb 100644 --- a/assets/l10n/app_ta.arb +++ b/assets/l10n/app_ta.arb @@ -311,7 +311,7 @@ "logout_success": "நீங்கள் வெற்றிகரமாக வெளியேறிவிட்டீர்கள்!", "logout_failure": "ஏதோ தவறாகிவிட்டது, சிறிது நேரம் கழித்து மீண்டும் முயற்சிக்கவும்", "go_to_home": "வீட்டிற்கு போ", - "errors": "{messages, select, REG_TRY_AGAIN{உள்நுழைவு தோல்வியுற்றது. மீண்டும் முயற்சி செய்!} REG_INVALID_REQUEST{கடவுச்சொல் தவறானது!} REG_MACHINE_NOT_FOUND{இந்த சாதனம் இன்னும் பதிவுசெய்யப்படவில்லை. உதவிக்காக உங்கள் நிர்வாகியை தொடர்புகொள்ளுங்கள்!} REG_NETWORK_ERROR{உள்நுழைவு தோல்வியுற்றது. நெட்வொர்க் இணைப்பை சரிபார்க்கவும்!} REG_CRED_EXPIRED{நற்சான்றிதழ்கள் காணப்படவில்லை அல்லது காலாவதியாகவில்லை. ஆன்லைன் உள்நுழைவை முயற்சிக்கவும்!} REG_MACHINE_INACTIVE{இயந்திரம் செயலில் இல்லை!} REG_CENTER_INACTIVE{மையம் செயல்படவில்லை!} REG_LOGIN_LOCKED{அதிகபட்ச உள்நுழைவு முயற்சி வரம்பை அடைந்தது. பிறகு முயற்சிக்கவும்!} KER_SYN_AUTH_001{அங்கீகார டோக்கனை பெற முடியவில்லை!} PAK_APPRVL_MAX_TIME{நடவடிக்கை தேவை: நிலுவையிலுள்ள பதிவு செய்யப்பட்ட பாக்கெட்டுகள் அனுமதிக்கப்பட்ட அனுமதி நேரத்தை மீறியுள்ளன. தொடர, பின்னிணைப்பை அழிக்கவும்.} PAK_UPLOAD_MAX_TIME{நடவடிக்கை தேவை: பதிவைத் தொடர்வதற்கு முன், சர்வரில் பாக்கெட்டுகளைப் பதிவேற்றவும் அல்லது ஏற்றுமதி செய்யவும்.} PAK_UPLOAD_MAX_COUNT{நடவடிக்கை தேவை: பாக்கெட் வரம்பை அடைந்தது. புதிய பதிவுகளை உருவாக்கும் முன் ஏற்கனவே உள்ள பாக்கெட்டுகளை ஏற்றுமதி செய்யவும் அல்லது பதிவேற்றவும்.} REG_PKT_APPRVL_CNT_EXCEED{கிளையண்டில் ஒப்புதலுக்காக காத்திருக்கும் பதிவு பாக்கெட்களின் அதிகபட்ச எண்ணிக்கை அடைந்தது. இந்த பதிவைத் தொடர்வதற்கு முன் பாக்கெட்களை ஒப்புதல் அல்லது நிராகரிக்கவும்.} other{'Some error occurred!'}}", +"errors": "{messages, select, REG_TRY_AGAIN{உள்நுழைவு தோல்வியுற்றது. மீண்டும் முயற்சி செய்!} REG_INVALID_REQUEST{கடவுச்சொல் தவறானது!} REG_MACHINE_NOT_FOUND{இந்த சாதனம் இன்னும் பதிவுசெய்யப்படவில்லை. உதவிக்காக உங்கள் நிர்வாகியை தொடர்புகொள்ளுங்கள்!} REG_NETWORK_ERROR{உள்நுழைவு தோல்வியுற்றது. நெட்வொர்க் இணைப்பை சரிபார்க்கவும்!} REG_CRED_EXPIRED{நற்சான்றிதழ்கள் காணப்படவில்லை அல்லது காலாவதியாகவில்லை. ஆன்லைன் உள்நுழைவை முயற்சிக்கவும்!} REG_MACHINE_INACTIVE{இயந்திரம் செயலில் இல்லை!} REG_CENTER_INACTIVE{மையம் செயல்படவில்லை!} REG_LOGIN_LOCKED{அதிகபட்ச உள்நுழைவு முயற்சி வரம்பை அடைந்தது. பிறகு முயற்சிக்கவும்!} KER_SYN_AUTH_001{அங்கீகார டோக்கனை பெற முடியவில்லை!} PAK_APPRVL_MAX_TIME{நடவடிக்கை தேவை: நிலுவையிலுள்ள பதிவு செய்யப்பட்ட பாக்கெட்டுகள் அனுமதிக்கப்பட்ட அனுமதி நேரத்தை மீறியுள்ளன. தொடர, பின்னிணைப்பை அழிக்கவும்.} PAK_UPLOAD_MAX_TIME{நடவடிக்கை தேவை: பதிவைத் தொடர்வதற்கு முன், சர்வரில் பாக்கெட்டுகளைப் பதிவேற்றவும் அல்லது ஏற்றுமதி செய்யவும்.} PAK_UPLOAD_MAX_COUNT{நடவடிக்கை தேவை: பாக்கெட் வரம்பை அடைந்தது. புதிய பதிவுகளை உருவாக்கும் முன் ஏற்கனவே உள்ள பாக்கெட்டுகளை ஏற்றுமதி செய்யவும் அல்லது பதிவேற்றவும்.} PAK_DISK_SPACE_LOW{பாக்கெட்டை உருவாக்க தேவையான குறைந்தபட்ச இடம் இல்லை.} REG_PKT_APPRVL_CNT_EXCEED{கிளையண்டில் ஒப்புதலுக்காக காத்திருக்கும் பதிவு பாக்கெட்களின் அதிகபட்ச எண்ணிக்கை அடைந்தது. இந்த பதிவைத் தொடர்வதற்கு முன் பாக்கெட்களை ஒப்புதல் அல்லது நிராகரிக்கவும்.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": {