Skip to content

Commit 777e5c5

Browse files
committed
feat: Add app configuration localization
- Added labels and descriptions - For app configuration feature
1 parent 12b502d commit 777e5c5

File tree

1 file changed

+330
-1
lines changed

1 file changed

+330
-1
lines changed

lib/l10n/arb/app_en.arb

Lines changed: 330 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,5 +104,334 @@
104104
"settings": "Settings",
105105
"@settings": {
106106
"description": "Label for the settings navigation item"
107+
},
108+
"appConfigurationPageTitle": "App Configuration",
109+
"@appConfigurationPageTitle": {
110+
"description": "Title for the App Configuration page"
111+
},
112+
"userContentLimitsTab": "User Content Limits",
113+
"@userContentLimitsTab": {
114+
"description": "Tab title for User Content Limits"
115+
},
116+
"adSettingsTab": "Ad Settings",
117+
"@adSettingsTab": {
118+
"description": "Tab title for Ad Settings"
119+
},
120+
"inAppPromptsTab": "In-App Prompts",
121+
"@inAppPromptsTab": {
122+
"description": "Tab title for In-App Prompts"
123+
},
124+
"appOperationalStatusTab": "App Operational Status",
125+
"@appOperationalStatusTab": {
126+
"description": "Tab title for App Operational Status"
127+
},
128+
"forceUpdateTab": "Force Update",
129+
"@forceUpdateTab": {
130+
"description": "Tab title for Force Update"
131+
},
132+
"appConfigSaveSuccessMessage": "App configuration saved successfully!",
133+
"@appConfigSaveSuccessMessage": {
134+
"description": "Snackbar message for successful app configuration save"
135+
},
136+
"appConfigSaveErrorMessage": "Error: {errorMessage}",
137+
"@appConfigSaveErrorMessage": {
138+
"description": "Snackbar message for app configuration save error",
139+
"placeholders": {
140+
"errorMessage": {
141+
"type": "String"
142+
}
143+
}
144+
},
145+
"unknownError": "Unknown error",
146+
"@unknownError": {
147+
"description": "Fallback message for unknown errors"
148+
},
149+
"loadingConfigurationHeadline": "Loading Configuration",
150+
"@loadingConfigurationHeadline": {
151+
"description": "Headline for loading state of app configuration"
152+
},
153+
"loadingConfigurationSubheadline": "Please wait while settings are loaded...",
154+
"@loadingConfigurationSubheadline": {
155+
"description": "Subheadline for loading state of app configuration"
156+
},
157+
"failedToLoadConfigurationMessage": "Failed to load configuration.",
158+
"@failedToLoadConfigurationMessage": {
159+
"description": "Message for failure state of app configuration loading"
160+
},
161+
"loadAppSettingsSubheadline": "Load application settings from the backend.",
162+
"@loadAppSettingsSubheadline": {
163+
"description": "Subheadline for initial state of app configuration"
164+
},
165+
"discardChangesButton": "Discard Changes",
166+
"@discardChangesButton": {
167+
"description": "Button to discard changes in app configuration"
168+
},
169+
"saveChangesButton": "Save Changes",
170+
"@saveChangesButton": {
171+
"description": "Button to save changes in app configuration"
172+
},
173+
"confirmConfigUpdateDialogTitle": "Confirm Configuration Update",
174+
"@confirmConfigUpdateDialogTitle": {
175+
"description": "Title for the confirmation dialog before saving app config"
176+
},
177+
"confirmConfigUpdateDialogContent": "Are you sure you want to apply these changes to the live application configuration? This is a critical operation.",
178+
"@confirmConfigUpdateDialogContent": {
179+
"description": "Content for the confirmation dialog before saving app config"
180+
},
181+
"cancelButton": "Cancel",
182+
"@cancelButton": {
183+
"description": "Cancel button label"
184+
},
185+
"confirmSaveButton": "Confirm Save",
186+
"@confirmSaveButton": {
187+
"description": "Confirm save button label in dialog"
188+
},
189+
"userContentLimitsDescription": "These settings define the maximum number of countries, news sources, categories, and saved headlines a user can follow or save. Limits vary by user type (Guest, Standard, Premium) and directly impact what content users can curate.",
190+
"@userContentLimitsDescription": {
191+
"description": "Description for User Content Limits section"
192+
},
193+
"guestUserTab": "Guest",
194+
"@guestUserTab": {
195+
"description": "Tab title for Guest user role"
196+
},
197+
"authenticatedUserTab": "Authenticated",
198+
"@authenticatedUserTab": {
199+
"description": "Tab title for Authenticated user role"
200+
},
201+
"premiumUserTab": "Premium",
202+
"@premiumUserTab": {
203+
"description": "Tab title for Premium user role"
204+
},
205+
"guestFollowedItemsLimitLabel": "Guest Followed Items Limit",
206+
"@guestFollowedItemsLimitLabel": {
207+
"description": "Label for Guest Followed Items Limit"
208+
},
209+
"guestFollowedItemsLimitDescription": "Maximum number of countries, news sources, or categories a Guest user can follow (each type has its own limit).",
210+
"@guestFollowedItemsLimitDescription": {
211+
"description": "Description for Guest Followed Items Limit"
212+
},
213+
"guestSavedHeadlinesLimitLabel": "Guest Saved Headlines Limit",
214+
"@guestSavedHeadlinesLimitLabel": {
215+
"description": "Label for Guest Saved Headlines Limit"
216+
},
217+
"guestSavedHeadlinesLimitDescription": "Maximum number of headlines a Guest user can save.",
218+
"@guestSavedHeadlinesLimitDescription": {
219+
"description": "Description for Guest Saved Headlines Limit"
220+
},
221+
"standardUserFollowedItemsLimitLabel": "Standard User Followed Items Limit",
222+
"@standardUserFollowedItemsLimitLabel": {
223+
"description": "Label for Standard User Followed Items Limit"
224+
},
225+
"standardUserFollowedItemsLimitDescription": "Maximum number of countries, news sources, or categories a Standard user can follow (each type has its own limit).",
226+
"@standardUserFollowedItemsLimitDescription": {
227+
"description": "Description for Standard User Followed Items Limit"
228+
},
229+
"standardUserSavedHeadlinesLimitLabel": "Standard User Saved Headlines Limit",
230+
"@standardUserSavedHeadlinesLimitLabel": {
231+
"description": "Label for Standard User Saved Headlines Limit"
232+
},
233+
"standardUserSavedHeadlinesLimitDescription": "Maximum number of headlines a Standard user can save.",
234+
"@standardUserSavedHeadlinesLimitDescription": {
235+
"description": "Description for Standard User Saved Headlines Limit"
236+
},
237+
"premiumFollowedItemsLimitLabel": "Premium Followed Items Limit",
238+
"@premiumFollowedItemsLimitLabel": {
239+
"description": "Label for Premium Followed Items Limit"
240+
},
241+
"premiumFollowedItemsLimitDescription": "Maximum number of countries, news sources, or categories a Premium user can follow (each type has its own limit).",
242+
"@premiumFollowedItemsLimitDescription": {
243+
"description": "Description for Premium Followed Items Limit"
244+
},
245+
"premiumSavedHeadlinesLimitLabel": "Premium Saved Headlines Limit",
246+
"@premiumSavedHeadlinesLimitLabel": {
247+
"description": "Label for Premium Saved Headlines Limit"
248+
},
249+
"premiumSavedHeadlinesLimitDescription": "Maximum number of headlines a Premium user can save.",
250+
"@premiumSavedHeadlinesLimitDescription": {
251+
"description": "Description for Premium Saved Headlines Limit"
252+
},
253+
"adSettingsDescription": "These settings control how advertisements are displayed within the app's news feed, with different rules for Guest, Standard, and Premium users. \"Ad Frequency\" determines how often an ad can appear, while \"Ad Placement Interval\" sets how many news items must be shown before the very first ad appears.",
254+
"@adSettingsDescription": {
255+
"description": "Description for Ad Settings section"
256+
},
257+
"standardUserAdTab": "Standard User",
258+
"@standardUserAdTab": {
259+
"description": "Tab title for Standard User in Ad Settings"
260+
},
261+
"guestAdFrequencyLabel": "Guest Ad Frequency",
262+
"@guestAdFrequencyLabel": {
263+
"description": "Label for Guest Ad Frequency"
264+
},
265+
"guestAdFrequencyDescription": "How often an ad can appear for Guest users (e.g., a value of 5 means an ad could be placed after every 5 news items).",
266+
"@guestAdFrequencyDescription": {
267+
"description": "Description for Guest Ad Frequency"
268+
},
269+
"guestAdPlacementIntervalLabel": "Guest Ad Placement Interval",
270+
"@guestAdPlacementIntervalLabel": {
271+
"description": "Label for Guest Ad Placement Interval"
272+
},
273+
"guestAdPlacementIntervalDescription": "Minimum number of news items that must be shown before the very first ad appears for Guest users.",
274+
"@guestAdPlacementIntervalDescription": {
275+
"description": "Description for Guest Ad Placement Interval"
276+
},
277+
"guestArticlesBeforeInterstitialAdsLabel": "Guest Articles Before Interstitial Ads",
278+
"@guestArticlesBeforeInterstitialAdsLabel": {
279+
"description": "Label for Guest Articles Before Interstitial Ads"
280+
},
281+
"guestArticlesBeforeInterstitialAdsDescription": "Number of articles a Guest user needs to read before a full-screen interstitial ad is shown.",
282+
"@guestArticlesBeforeInterstitialAdsDescription": {
283+
"description": "Description for Guest Articles Before Interstitial Ads"
284+
},
285+
"standardUserAdFrequencyLabel": "Standard User Ad Frequency",
286+
"@standardUserAdFrequencyLabel": {
287+
"description": "Label for Standard User Ad Frequency"
288+
},
289+
"standardUserAdFrequencyDescription": "How often an ad can appear for Standard users (e.g., a value of 10 means an ad could be placed after every 10 news items).",
290+
"@standardUserAdFrequencyDescription": {
291+
"description": "Description for Standard User Ad Frequency"
292+
},
293+
"standardUserAdPlacementIntervalLabel": "Standard User Ad Placement Interval",
294+
"@standardUserAdPlacementIntervalLabel": {
295+
"description": "Label for Standard User Ad Placement Interval"
296+
},
297+
"standardUserAdPlacementIntervalDescription": "Minimum number of news items that must be shown before the very first ad appears for Standard users.",
298+
"@standardUserAdPlacementIntervalDescription": {
299+
"description": "Description for Standard User Ad Placement Interval"
300+
},
301+
"standardUserArticlesBeforeInterstitialAdsLabel": "Standard User Articles Before Interstitial Ads",
302+
"@standardUserArticlesBeforeInterstitialAdsLabel": {
303+
"description": "Label for Standard User Articles Before Interstitial Ads"
304+
},
305+
"standardUserArticlesBeforeInterstitialAdsDescription": "Number of articles a Standard user needs to read before a full-screen interstitial ad is shown.",
306+
"@standardUserArticlesBeforeInterstitialAdsDescription": {
307+
"description": "Description for Standard User Articles Before Interstitial Ads"
308+
},
309+
"premiumAdFrequencyLabel": "Premium Ad Frequency",
310+
"@premiumAdFrequencyLabel": {
311+
"description": "Label for Premium Ad Frequency"
312+
},
313+
"premiumAdFrequencyDescription": "How often an ad can appear for Premium users (0 for no ads).",
314+
"@premiumAdFrequencyDescription": {
315+
"description": "Description for Premium Ad Frequency"
316+
},
317+
"premiumAdPlacementIntervalLabel": "Premium Ad Placement Interval",
318+
"@premiumAdPlacementIntervalLabel": {
319+
"description": "Label for Premium Ad Placement Interval"
320+
},
321+
"premiumAdPlacementIntervalDescription": "Minimum number of news items that must be shown before the very first ad appears for Premium users.",
322+
"@premiumAdPlacementIntervalDescription": {
323+
"description": "Description for Premium Ad Placement Interval"
324+
},
325+
"premiumUserArticlesBeforeInterstitialAdsLabel": "Premium User Articles Before Interstitial Ads",
326+
"@premiumUserArticlesBeforeInterstitialAdsLabel": {
327+
"description": "Label for Premium User Articles Before Interstitial Ads"
328+
},
329+
"premiumUserArticlesBeforeInterstitialAdsDescription": "Number of articles a Premium user needs to read before a full-screen interstitial ad is shown.",
330+
"@premiumUserArticlesBeforeInterstitialAdsDescription": {
331+
"description": "Description for Premium User Articles Before Interstitial Ads"
332+
},
333+
"inAppPromptsDescription": "These settings control how often special in-app messages or \"prompts\" are shown to users in their news feed. These prompts encourage actions like linking an account (for guests) or upgrading to a premium subscription (for authenticated users). The frequency varies by user type.",
334+
"@inAppPromptsDescription": {
335+
"description": "Description for In-App Prompts section"
336+
},
337+
"appOperationalStatusWarning": "WARNING: Changing the app's operational status can affect all users. Use with extreme caution.",
338+
"@appOperationalStatusWarning": {
339+
"description": "Warning message for changing app operational status"
340+
},
341+
"appOperationalStatusLabel": "App Operational Status",
342+
"@appOperationalStatusLabel": {
343+
"description": "Label for App Operational Status"
344+
},
345+
"appOperationalStatusDescription": "The current operational status of the app (e.g., active, maintenance, disabled).",
346+
"@appOperationalStatusDescription": {
347+
"description": "Description for App Operational Status"
348+
},
349+
"maintenanceMessageLabel": "Maintenance Message",
350+
"@maintenanceMessageLabel": {
351+
"description": "Label for Maintenance Message"
352+
},
353+
"maintenanceMessageDescription": "Message displayed when the app is in maintenance mode.",
354+
"@maintenanceMessageDescription": {
355+
"description": "Description for Maintenance Message"
356+
},
357+
"disabledMessageLabel": "Disabled Message",
358+
"@disabledMessageLabel": {
359+
"description": "Label for Disabled Message"
360+
},
361+
"disabledMessageDescription": "Message displayed when the app is permanently disabled.",
362+
"@disabledMessageDescription": {
363+
"description": "Description for Disabled Message"
364+
},
365+
"forceUpdateConfigurationTitle": "Force Update Configuration",
366+
"@forceUpdateConfigurationTitle": {
367+
"description": "Title for Force Update Configuration section"
368+
},
369+
"forceUpdateDescription": "These settings control app version enforcement. Users on versions below the minimum allowed will be forced to update.",
370+
"@forceUpdateDescription": {
371+
"description": "Description for Force Update Configuration section"
372+
},
373+
"minAllowedAppVersionLabel": "Minimum Allowed App Version",
374+
"@minAllowedAppVersionLabel": {
375+
"description": "Label for Minimum Allowed App Version"
376+
},
377+
"minAllowedAppVersionDescription": "The lowest app version allowed to run (e.g., \"1.2.0\").",
378+
"@minAllowedAppVersionDescription": {
379+
"description": "Description for Minimum Allowed App Version"
380+
},
381+
"latestAppVersionLabel": "Latest App Version",
382+
"@latestAppVersionLabel": {
383+
"description": "Label for Latest App Version"
384+
},
385+
"latestAppVersionDescription": "The latest available app version (e.g., \"1.5.0\").",
386+
"@latestAppVersionDescription": {
387+
"description": "Description for Latest App Version"
388+
},
389+
"updateRequiredMessageLabel": "Update Required Message",
390+
"@updateRequiredMessageLabel": {
391+
"description": "Label for Update Required Message"
392+
},
393+
"updateRequiredMessageDescription": "Message displayed when a force update is required.",
394+
"@updateRequiredMessageDescription": {
395+
"description": "Description for Update Required Message"
396+
},
397+
"updateOptionalMessageLabel": "Update Optional Message",
398+
"@updateOptionalMessageLabel": {
399+
"description": "Label for Update Optional Message"
400+
},
401+
"updateOptionalMessageDescription": "Message displayed for an optional update.",
402+
"@updateOptionalMessageDescription": {
403+
"description": "Description for Update Optional Message"
404+
},
405+
"iosStoreUrlLabel": "iOS Store URL",
406+
"@iosStoreUrlLabel": {
407+
"description": "Label for iOS Store URL"
408+
},
409+
"iosStoreUrlDescription": "URL to the app on the Apple App Store.",
410+
"@iosStoreUrlDescription": {
411+
"description": "Description for iOS Store URL"
412+
},
413+
"androidStoreUrlLabel": "Android Store URL",
414+
"@androidStoreUrlLabel": {
415+
"description": "Label for Android Store URL"
416+
},
417+
"androidStoreUrlDescription": "URL to the app on the Google Play Store.",
418+
"@androidStoreUrlDescription": {
419+
"description": "Description for Android Store URL"
420+
},
421+
"guestDaysBetweenInAppPromptsLabel": "Guest Days Between In-App Prompts",
422+
"@guestDaysBetweenInAppPromptsLabel": {
423+
"description": "Label for Guest Days Between In-App Prompts"
424+
},
425+
"guestDaysBetweenInAppPromptsDescription": "Minimum number of days that must pass before a Guest user sees another in-app prompt.",
426+
"@guestDaysBetweenInAppPromptsDescription": {
427+
"description": "Description for Guest Days Between In-App Prompts"
428+
},
429+
"standardUserDaysBetweenInAppPromptsLabel": "Standard User Days Between In-App Prompts",
430+
"@standardUserDaysBetweenInAppPromptsLabel": {
431+
"description": "Label for Standard User Days Between In-App Prompts"
432+
},
433+
"standardUserDaysBetweenInAppPromptsDescription": "Minimum number of days that must pass before a Standard user sees another in-app prompt.",
434+
"@standardUserDaysBetweenInAppPromptsDescription": {
435+
"description": "Description for Standard User Days Between In-App Prompts"
107436
}
108-
}
437+
}

0 commit comments

Comments
 (0)