permission_forge 0.14.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2372 -0
  3. data/README.md +76 -25
  4. data/app/controllers/concerns/permission_forge/api/crud_actions.rb +3 -2
  5. data/app/controllers/concerns/permission_forge/api/input_shapes.rb +200 -0
  6. data/app/controllers/concerns/permission_forge/api/pagination.rb +12 -5
  7. data/app/controllers/concerns/permission_forge/api/response_renderer.rb +37 -1
  8. data/app/controllers/concerns/permission_forge/api_authentication.rb +13 -2
  9. data/app/controllers/concerns/permission_forge/cache_confirmation.rb +42 -11
  10. data/app/controllers/concerns/permission_forge/change_review.rb +42 -0
  11. data/app/controllers/concerns/permission_forge/copy_refusal.rb +39 -0
  12. data/app/controllers/concerns/permission_forge/param_shapes.rb +207 -7
  13. data/app/controllers/concerns/permission_forge/save_notice.rb +69 -0
  14. data/app/controllers/permission_forge/api/audit_events_controller.rb +1 -1
  15. data/app/controllers/permission_forge/api/base_controller.rb +163 -12
  16. data/app/controllers/permission_forge/api/dashboard_controller.rb +29 -4
  17. data/app/controllers/permission_forge/api/permission_set_group_users_controller.rb +5 -2
  18. data/app/controllers/permission_forge/api/permission_set_groups_controller.rb +5 -4
  19. data/app/controllers/permission_forge/api/permission_set_rules_controller.rb +7 -5
  20. data/app/controllers/permission_forge/api/permission_set_users_controller.rb +80 -19
  21. data/app/controllers/permission_forge/api/permission_sets_controller.rb +12 -6
  22. data/app/controllers/permission_forge/api/resource_actions_controller.rb +1 -1
  23. data/app/controllers/permission_forge/api/resource_fields_controller.rb +3 -4
  24. data/app/controllers/permission_forge/api/resources_controller.rb +26 -12
  25. data/app/controllers/permission_forge/api/unmatched_routes_controller.rb +20 -0
  26. data/app/controllers/permission_forge/application_controller.rb +39 -5
  27. data/app/controllers/permission_forge/assignments_controller.rb +36 -34
  28. data/app/controllers/permission_forge/bulk_assignments_controller.rb +8 -4
  29. data/app/controllers/permission_forge/field_lookups_controller.rb +1 -1
  30. data/app/controllers/permission_forge/maintenance_controller.rb +6 -2
  31. data/app/controllers/permission_forge/people_controller.rb +14 -14
  32. data/app/controllers/permission_forge/permission_set_editor.rb +20 -6
  33. data/app/controllers/permission_forge/permission_set_group_users_controller.rb +3 -1
  34. data/app/controllers/permission_forge/permission_set_groups_controller.rb +23 -9
  35. data/app/controllers/permission_forge/permission_set_rules_controller.rb +20 -10
  36. data/app/controllers/permission_forge/permission_sets_controller.rb +23 -24
  37. data/app/controllers/permission_forge/resource_actions_controller.rb +11 -6
  38. data/app/controllers/permission_forge/resource_fields_controller.rb +37 -19
  39. data/app/controllers/permission_forge/resources_controller.rb +12 -11
  40. data/app/frontend/permission_forge/pf_admin.css +99 -17
  41. data/app/frontend/permission_forge/pf_admin.js +36 -0
  42. data/app/helpers/permission_forge/application_helper.rb +22 -72
  43. data/app/helpers/permission_forge/audit_attribution_helper.rb +77 -0
  44. data/app/helpers/permission_forge/audit_helper.rb +57 -119
  45. data/app/helpers/permission_forge/audit_records_helper.rb +103 -0
  46. data/app/helpers/permission_forge/audit_sentences_helper.rb +56 -2
  47. data/app/helpers/permission_forge/badges_helper.rb +74 -17
  48. data/app/helpers/permission_forge/changes_helper.rb +24 -6
  49. data/app/helpers/permission_forge/conditions_helper.rb +119 -0
  50. data/app/helpers/permission_forge/labels_helper.rb +134 -0
  51. data/app/helpers/permission_forge/people_helper.rb +11 -19
  52. data/app/helpers/permission_forge/rule_problems_helper.rb +73 -0
  53. data/app/helpers/permission_forge/sentences_helper.rb +119 -98
  54. data/app/helpers/permission_forge/settings_helper.rb +2 -2
  55. data/app/helpers/permission_forge/ui_helper.rb +65 -4
  56. data/app/models/permission_forge/audit_event.rb +5 -1
  57. data/app/models/permission_forge/permission_set.rb +208 -18
  58. data/app/models/permission_forge/permission_set_group.rb +10 -4
  59. data/app/models/permission_forge/permission_set_group_user.rb +3 -1
  60. data/app/models/permission_forge/permission_set_rule.rb +254 -17
  61. data/app/models/permission_forge/permission_set_user.rb +38 -3
  62. data/app/models/permission_forge/resource.rb +18 -8
  63. data/app/models/permission_forge/resource_action.rb +15 -6
  64. data/app/models/permission_forge/resource_field.rb +97 -11
  65. data/app/views/permission_forge/assignments/confirm_destroy.html.erb +4 -4
  66. data/app/views/permission_forge/assignments/new.html.erb +10 -6
  67. data/app/views/permission_forge/audit_events/index.html.erb +1 -1
  68. data/app/views/permission_forge/audit_events/show.html.erb +16 -9
  69. data/app/views/permission_forge/bulk_assignments/confirm_revoke.html.erb +3 -3
  70. data/app/views/permission_forge/bulk_assignments/new.html.erb +3 -3
  71. data/app/views/permission_forge/field_lookups/show.html.erb +2 -2
  72. data/app/views/permission_forge/home/_broken_rules_card.html.erb +35 -0
  73. data/app/views/permission_forge/home/_conditions_card.html.erb +28 -0
  74. data/app/views/permission_forge/home/_ending_card.html.erb +11 -5
  75. data/app/views/permission_forge/home/_expired_card.html.erb +1 -1
  76. data/app/views/permission_forge/home/_mask_strategies_card.html.erb +27 -0
  77. data/app/views/permission_forge/home/_privacy_card.html.erb +21 -7
  78. data/app/views/permission_forge/home/_rules_card.html.erb +1 -1
  79. data/app/views/permission_forge/home/_secret_rules_card.html.erb +33 -0
  80. data/app/views/permission_forge/home/_stale_card.html.erb +7 -5
  81. data/app/views/permission_forge/home/_tidy_card.html.erb +1 -1
  82. data/app/views/permission_forge/home/index.html.erb +5 -6
  83. data/app/views/permission_forge/people/_access_tab.html.erb +26 -19
  84. data/app/views/permission_forge/people/_audit_tab.html.erb +8 -8
  85. data/app/views/permission_forge/people/_effective_field_source.html.erb +13 -7
  86. data/app/views/permission_forge/people/_effective_tab.html.erb +16 -15
  87. data/app/views/permission_forge/people/_effective_why.html.erb +20 -16
  88. data/app/views/permission_forge/people/_why_item.html.erb +1 -1
  89. data/app/views/permission_forge/people/confirm_remove_all.html.erb +3 -3
  90. data/app/views/permission_forge/people/erasure_preview.html.erb +1 -1
  91. data/app/views/permission_forge/permission_set_groups/confirm_destroy.html.erb +3 -3
  92. data/app/views/permission_forge/permission_set_groups/index.html.erb +3 -3
  93. data/app/views/permission_forge/permission_set_groups/show.html.erb +28 -19
  94. data/app/views/permission_forge/permission_set_rules/_builder.html.erb +35 -15
  95. data/app/views/permission_forge/permission_set_rules/_preview.html.erb +17 -0
  96. data/app/views/permission_forge/permission_set_rules/confirm_destroy.html.erb +3 -3
  97. data/app/views/permission_forge/permission_set_rules/preview.html.erb +12 -0
  98. data/app/views/permission_forge/permission_sets/_assignments_tab.html.erb +37 -22
  99. data/app/views/permission_forge/permission_sets/_audit_tab.html.erb +4 -4
  100. data/app/views/permission_forge/permission_sets/_condition_problems.html.erb +15 -0
  101. data/app/views/permission_forge/permission_sets/_conditions_tab.html.erb +14 -8
  102. data/app/views/permission_forge/permission_sets/_header.html.erb +6 -5
  103. data/app/views/permission_forge/permission_sets/_records_summary.html.erb +2 -2
  104. data/app/views/permission_forge/permission_sets/_resources_tab.html.erb +4 -4
  105. data/app/views/permission_forge/permission_sets/confirm_destroy.html.erb +4 -4
  106. data/app/views/permission_forge/permission_sets/confirm_switch_mode.html.erb +3 -3
  107. data/app/views/permission_forge/permission_sets/index.html.erb +6 -6
  108. data/app/views/permission_forge/permission_sets/new.html.erb +2 -2
  109. data/app/views/permission_forge/permission_sets/review.html.erb +13 -3
  110. data/app/views/permission_forge/permission_sets/show.html.erb +7 -5
  111. data/app/views/permission_forge/resource_actions/_across_sets.html.erb +7 -10
  112. data/app/views/permission_forge/resource_actions/_effect.html.erb +5 -5
  113. data/app/views/permission_forge/resource_actions/_form.html.erb +1 -1
  114. data/app/views/permission_forge/resource_actions/_managed_note.html.erb +5 -3
  115. data/app/views/permission_forge/resource_actions/confirm_destroy.html.erb +1 -1
  116. data/app/views/permission_forge/resource_actions/new.html.erb +1 -1
  117. data/app/views/permission_forge/resource_actions/show.html.erb +2 -2
  118. data/app/views/permission_forge/resource_fields/_explain.html.erb +19 -15
  119. data/app/views/permission_forge/resource_fields/show.html.erb +21 -12
  120. data/app/views/permission_forge/resources/_actions_tab.html.erb +4 -4
  121. data/app/views/permission_forge/resources/_fields_tab.html.erb +17 -9
  122. data/app/views/permission_forge/resources/_rules_tab.html.erb +9 -6
  123. data/app/views/permission_forge/resources/_sync.html.erb +8 -5
  124. data/app/views/permission_forge/resources/confirm_destroy.html.erb +3 -3
  125. data/app/views/permission_forge/resources/new.html.erb +3 -2
  126. data/app/views/permission_forge/resources/show.html.erb +6 -6
  127. data/app/views/permission_forge/settings/_row.html.erb +2 -2
  128. data/app/views/permission_forge/settings/show.html.erb +10 -1
  129. data/app/views/permission_forge/shared/_across_sets.html.erb +8 -9
  130. data/app/views/permission_forge/shared/_audit_events.html.erb +2 -2
  131. data/app/views/permission_forge/shared/_audit_footer.html.erb +13 -2
  132. data/app/views/permission_forge/shared/_crud_cell.html.erb +6 -6
  133. data/app/views/permission_forge/shared/_mode_banners.html.erb +1 -1
  134. data/app/views/permission_forge/shared/_savebar.html.erb +4 -2
  135. data/config/locales/permission_forge.en.yml +480 -69
  136. data/config/locales/permission_forge.mk.yml +499 -79
  137. data/config/locales/permission_forge.sq.yml +509 -80
  138. data/config/routes.rb +38 -23
  139. data/lib/generators/permission_forge/install/install_generator.rb +21 -0
  140. data/lib/generators/permission_forge/install/templates/initializer.rb.tt +35 -34
  141. data/lib/generators/permission_forge/install/templates/migration.rb.tt +5 -5
  142. data/lib/permission_forge/activation_conditions.rb +200 -0
  143. data/lib/permission_forge/admin/action_label.rb +33 -0
  144. data/lib/permission_forge/admin/action_rows.rb +3 -1
  145. data/lib/permission_forge/admin/actor_label.rb +52 -0
  146. data/lib/permission_forge/admin/attention_items.rb +152 -31
  147. data/lib/permission_forge/admin/audit_log.rb +4 -7
  148. data/lib/permission_forge/admin/audit_trail.rb +33 -17
  149. data/lib/permission_forge/admin/bulk_people_matcher.rb +32 -14
  150. data/lib/permission_forge/admin/chain_entries.rb +42 -0
  151. data/lib/permission_forge/admin/change_set.rb +12 -1
  152. data/lib/permission_forge/admin/change_set_parts/base.rb +5 -4
  153. data/lib/permission_forge/admin/change_set_parts/context.rb +3 -1
  154. data/lib/permission_forge/admin/change_set_parts/field_edit.rb +4 -1
  155. data/lib/permission_forge/admin/change_set_parts/field_levels.rb +1 -1
  156. data/lib/permission_forge/admin/change_set_parts/new_actions.rb +1 -1
  157. data/lib/permission_forge/admin/change_set_parts/new_fields.rb +38 -11
  158. data/lib/permission_forge/admin/change_set_parts/resource_edit.rb +17 -1
  159. data/lib/permission_forge/admin/change_set_parts/resource_flags.rb +1 -1
  160. data/lib/permission_forge/admin/change_set_parts/set_attrs.rb +4 -0
  161. data/lib/permission_forge/admin/change_set_parts/values.rb +10 -4
  162. data/lib/permission_forge/admin/column_fields.rb +22 -21
  163. data/lib/permission_forge/admin/conditions_form.rb +47 -15
  164. data/lib/permission_forge/admin/controller_catalog.rb +42 -14
  165. data/lib/permission_forge/admin/editable_lock.rb +83 -3
  166. data/lib/permission_forge/admin/effective_access.rb +147 -48
  167. data/lib/permission_forge/admin/effective_fields.rb +75 -67
  168. data/lib/permission_forge/admin/error_sentence.rb +47 -0
  169. data/lib/permission_forge/admin/expiry_presets.rb +17 -0
  170. data/lib/permission_forge/admin/exports/holdings.rb +6 -3
  171. data/lib/permission_forge/admin/field_across_sets.rb +7 -4
  172. data/lib/permission_forge/admin/field_chain.rb +109 -0
  173. data/lib/permission_forge/admin/field_detail.rb +24 -11
  174. data/lib/permission_forge/admin/field_label.rb +109 -0
  175. data/lib/permission_forge/admin/field_level.rb +4 -68
  176. data/lib/permission_forge/admin/field_provenance.rb +132 -0
  177. data/lib/permission_forge/admin/field_rows.rb +26 -11
  178. data/lib/permission_forge/admin/last_changes.rb +14 -0
  179. data/lib/permission_forge/admin/list_sentence.rb +32 -0
  180. data/lib/permission_forge/admin/mask_strategy_choices.rb +57 -0
  181. data/lib/permission_forge/admin/model_catalog.rb +83 -39
  182. data/lib/permission_forge/admin/model_label.rb +66 -0
  183. data/lib/permission_forge/admin/people_candidates.rb +21 -9
  184. data/lib/permission_forge/admin/people_directory.rb +23 -5
  185. data/lib/permission_forge/admin/permission_set_factory.rb +6 -15
  186. data/lib/permission_forge/admin/person_label.rb +105 -16
  187. data/lib/permission_forge/admin/prefill.rb +92 -0
  188. data/lib/permission_forge/admin/record_name.rb +45 -0
  189. data/lib/permission_forge/admin/rule_builder.rb +77 -3
  190. data/lib/permission_forge/admin/rule_form.rb +44 -10
  191. data/lib/permission_forge/admin/rule_form_input.rb +27 -11
  192. data/lib/permission_forge/admin/rule_notes.rb +43 -0
  193. data/lib/permission_forge/admin/rule_preview.rb +96 -0
  194. data/lib/permission_forge/admin/sensitive_columns.rb +10 -62
  195. data/lib/permission_forge/admin/settings_catalog.rb +64 -12
  196. data/lib/permission_forge/admin/state_label.rb +97 -0
  197. data/lib/permission_forge/admin_method_override.rb +44 -0
  198. data/lib/permission_forge/api/schema.rb +322 -0
  199. data/lib/permission_forge/api/serializers/base_serializer.rb +87 -1
  200. data/lib/permission_forge/api/serializers/permission_set_group_user_serializer.rb +1 -1
  201. data/lib/permission_forge/api/serializers/permission_set_rule_serializer.rb +1 -1
  202. data/lib/permission_forge/api/serializers/permission_set_serializer.rb +5 -2
  203. data/lib/permission_forge/api/serializers/permission_set_user_serializer.rb +1 -1
  204. data/lib/permission_forge/api/serializers/resource_action_serializer.rb +1 -1
  205. data/lib/permission_forge/api/serializers/resource_field_serializer.rb +1 -1
  206. data/lib/permission_forge/api/serializers/resource_serializer.rb +1 -1
  207. data/lib/permission_forge/api_authorizations.rb +59 -0
  208. data/lib/permission_forge/api_only_admin.rb +81 -0
  209. data/lib/permission_forge/audit/actor_codes.rb +32 -0
  210. data/lib/permission_forge/audit/actor_resolver.rb +1 -2
  211. data/lib/permission_forge/audit/boot_warnings.rb +29 -9
  212. data/lib/permission_forge/audit/event_catalog.rb +16 -6
  213. data/lib/permission_forge/audit/event_query.rb +3 -3
  214. data/lib/permission_forge/audit/reason_codes.rb +25 -0
  215. data/lib/permission_forge/audit/runtime.rb +9 -2
  216. data/lib/permission_forge/audit/settings_observer.rb +2 -2
  217. data/lib/permission_forge/audit/unmasked_without_user.rb +169 -0
  218. data/lib/permission_forge/audit.rb +24 -10
  219. data/lib/permission_forge/boot_checks.rb +180 -63
  220. data/lib/permission_forge/cache/base.rb +10 -0
  221. data/lib/permission_forge/cache/null_cache.rb +5 -0
  222. data/lib/permission_forge/cache/outcome.rb +119 -0
  223. data/lib/permission_forge/cache/rails_cache.rb +6 -0
  224. data/lib/permission_forge/cache/report.rb +150 -0
  225. data/lib/permission_forge/cache/user_keys.rb +8 -4
  226. data/lib/permission_forge/cache_warnings.rb +140 -0
  227. data/lib/permission_forge/concerns/auto_permission_scoping.rb +19 -2
  228. data/lib/permission_forge/concerns/has_tenant_scoping.rb +1 -1
  229. data/lib/permission_forge/concerns/has_uuid.rb +1 -1
  230. data/lib/permission_forge/concerns/keeps_copied_values.rb +48 -0
  231. data/lib/permission_forge/concerns/masked_attributes/alias_access.rb +12 -2
  232. data/lib/permission_forge/concerns/masked_attributes/virtual_readers.rb +6 -4
  233. data/lib/permission_forge/concerns/masked_attributes.rb +150 -34
  234. data/lib/permission_forge/concerns/normalizes_label.rb +78 -0
  235. data/lib/permission_forge/concerns/permission_cache_accessor.rb +3 -3
  236. data/lib/permission_forge/concerns/permission_scoped_findable.rb +121 -29
  237. data/lib/permission_forge/concerns/permissioned_user.rb +1 -1
  238. data/lib/permission_forge/concerns/records_audit_events.rb +13 -6
  239. data/lib/permission_forge/concerns/requires_name.rb +37 -0
  240. data/lib/permission_forge/concerns/validates_column_lengths.rb +24 -0
  241. data/lib/permission_forge/concerns/validates_dependency.rb +5 -2
  242. data/lib/permission_forge/concerns/validates_required_columns.rb +74 -0
  243. data/lib/permission_forge/conditional_sets.rb +13 -6
  244. data/lib/permission_forge/configuration/admin_ui_settings.rb +18 -4
  245. data/lib/permission_forge/configuration/audit_settings.rb +2 -1
  246. data/lib/permission_forge/configuration/controller_action_settings.rb +5 -4
  247. data/lib/permission_forge/configuration/masked_attributes_settings.rb +73 -19
  248. data/lib/permission_forge/configuration/presets.rb +20 -11
  249. data/lib/permission_forge/configuration/query_scoping_settings.rb +55 -0
  250. data/lib/permission_forge/configuration/strategy_values.rb +2 -1
  251. data/lib/permission_forge/configuration.rb +41 -18
  252. data/lib/permission_forge/controller_actions/managed_index.rb +8 -7
  253. data/lib/permission_forge/database_reach.rb +93 -0
  254. data/lib/permission_forge/deprecation.rb +1 -1
  255. data/lib/permission_forge/docs/api_samples.rb +250 -0
  256. data/lib/permission_forge/docs/configuration_reference.rb +172 -0
  257. data/lib/permission_forge/encrypted_attributes.rb +150 -0
  258. data/lib/permission_forge/engine.rb +46 -14
  259. data/lib/permission_forge/execution_state/restore.rb +74 -0
  260. data/lib/permission_forge/execution_state.rb +8 -1
  261. data/lib/permission_forge/field_level.rb +123 -0
  262. data/lib/permission_forge/field_names.rb +145 -0
  263. data/lib/permission_forge/field_variants.rb +96 -0
  264. data/lib/permission_forge/generated_text.rb +95 -0
  265. data/lib/permission_forge/inspection_filters.rb +83 -0
  266. data/lib/permission_forge/managed_fields.rb +66 -0
  267. data/lib/permission_forge/masked_models.rb +25 -19
  268. data/lib/permission_forge/masking_sync.rb +100 -25
  269. data/lib/permission_forge/model_bindings.rb +30 -19
  270. data/lib/permission_forge/model_lookup.rb +42 -0
  271. data/lib/permission_forge/operators/encrypted_alias.rb +67 -0
  272. data/lib/permission_forge/operators/registry.rb +6 -0
  273. data/lib/permission_forge/operators/rule_column.rb +242 -27
  274. data/lib/permission_forge/operators/rule_path.rb +179 -0
  275. data/lib/permission_forge/operators/rule_problem.rb +309 -0
  276. data/lib/permission_forge/operators/rule_sources.rb +96 -0
  277. data/lib/permission_forge/operators/value_casters/postgresql_types.rb +237 -0
  278. data/lib/permission_forge/operators/value_casters/temporal.rb +9 -20
  279. data/lib/permission_forge/operators/value_casters.rb +61 -13
  280. data/lib/permission_forge/operators/value_typing.rb +83 -7
  281. data/lib/permission_forge/query_scoping_warnings.rb +22 -17
  282. data/lib/permission_forge/rake_audit.rb +5 -4
  283. data/lib/permission_forge/rake_dry_run.rb +32 -0
  284. data/lib/permission_forge/rake_output.rb +189 -0
  285. data/lib/permission_forge/record_read_access.rb +51 -0
  286. data/lib/permission_forge/resource_chain.rb +14 -2
  287. data/lib/permission_forge/schema_read/ordered_types.rb +72 -0
  288. data/lib/permission_forge/schema_read.rb +335 -0
  289. data/lib/permission_forge/secret_columns.rb +49 -0
  290. data/lib/permission_forge/sensitive_columns.rb +114 -0
  291. data/lib/permission_forge/services/attribute_access_guard.rb +22 -14
  292. data/lib/permission_forge/services/bulk_permission_set_assignment.rb +16 -8
  293. data/lib/permission_forge/services/concerns/clonable.rb +9 -0
  294. data/lib/permission_forge/services/concerns/settles_cache.rb +58 -0
  295. data/lib/permission_forge/services/consent_withdrawal_handler.rb +37 -19
  296. data/lib/permission_forge/services/data_subject_erasure.rb +83 -45
  297. data/lib/permission_forge/services/expired_assignment_cleaner.rb +62 -25
  298. data/lib/permission_forge/services/extra_field_defaults.rb +1 -1
  299. data/lib/permission_forge/services/field_permission_merger.rb +44 -17
  300. data/lib/permission_forge/services/filters_response_attributes.rb +20 -5
  301. data/lib/permission_forge/services/gdpr_field_auditor/text_report.rb +33 -5
  302. data/lib/permission_forge/services/gdpr_field_auditor.rb +68 -48
  303. data/lib/permission_forge/services/host_key_guard.rb +8 -5
  304. data/lib/permission_forge/services/mask_value.rb +72 -11
  305. data/lib/permission_forge/services/permission_cache_clearer.rb +36 -15
  306. data/lib/permission_forge/services/permission_hash_builder.rb +48 -19
  307. data/lib/permission_forge/services/permission_rule_applier.rb +131 -68
  308. data/lib/permission_forge/services/permission_set_cloner.rb +32 -8
  309. data/lib/permission_forge/services/permission_set_condition_evaluator.rb +38 -36
  310. data/lib/permission_forge/services/permission_set_group_cloner.rb +2 -1
  311. data/lib/permission_forge/services/permits_attributes/result.rb +31 -0
  312. data/lib/permission_forge/services/permits_attributes.rb +48 -27
  313. data/lib/permission_forge/services/resource_field_generator/row_builder.rb +96 -0
  314. data/lib/permission_forge/services/resource_field_generator.rb +71 -42
  315. data/lib/permission_forge/services/resource_with_fields_builder.rb +2 -1
  316. data/lib/permission_forge/services/rls_operator_sql.rb +83 -24
  317. data/lib/permission_forge/services/rls_policy_generator.rb +83 -39
  318. data/lib/permission_forge/services/rls_read_access_sql.rb +131 -0
  319. data/lib/permission_forge/services/security_audit/action_check.rb +49 -5
  320. data/lib/permission_forge/services/security_audit/assignment_check.rb +2 -1
  321. data/lib/permission_forge/services/security_audit/audit_trail_check.rb +1 -3
  322. data/lib/permission_forge/services/security_audit/conditions_check.rb +92 -0
  323. data/lib/permission_forge/services/security_audit/config_check.rb +41 -18
  324. data/lib/permission_forge/services/security_audit/integrity_check.rb +71 -4
  325. data/lib/permission_forge/services/security_audit/masking_without_user.rb +66 -0
  326. data/lib/permission_forge/services/security_audit/personal_data_check.rb +7 -11
  327. data/lib/permission_forge/services/security_audit/rule_check.rb +180 -50
  328. data/lib/permission_forge/services/security_audit/text_report.rb +14 -2
  329. data/lib/permission_forge/services/security_audit/unmanaged_actions.rb +145 -0
  330. data/lib/permission_forge/services/security_audit/user_model_check.rb +4 -3
  331. data/lib/permission_forge/services/security_audit.rb +16 -4
  332. data/lib/permission_forge/services/stale_assignment_auditor.rb +8 -5
  333. data/lib/permission_forge/timestamp_fields.rb +60 -0
  334. data/lib/permission_forge/unique_conflict.rb +117 -0
  335. data/lib/permission_forge/version.rb +1 -1
  336. data/lib/permission_forge/virtual_fields/discovery.rb +2 -1
  337. data/lib/permission_forge/virtual_fields.rb +15 -5
  338. data/lib/permission_forge/warnings.rb +263 -0
  339. data/lib/permission_forge/web_request.rb +248 -0
  340. data/lib/permission_forge.rb +54 -0
  341. data/lib/tasks/permission_forge.rake +26 -6
  342. data/lib/tasks/permission_forge_audit_events.rake +8 -4
  343. data/lib/tasks/permission_forge_cache.rake +12 -12
  344. data/lib/tasks/permission_forge_docs.rake +48 -0
  345. data/lib/tasks/permission_forge_expiration.rake +11 -5
  346. data/lib/tasks/permission_forge_gdpr.rake +36 -20
  347. metadata +84 -1
@@ -3,14 +3,51 @@ sq:
3
3
  permission_forge:
4
4
  api:
5
5
  errors:
6
+ action_authorization_missing: Ndryshimet përmes API-së kërkojnë config.api_action_authorization;
7
+ refuzohen sa kohë që nuk është vendosur dhe config.api_require_authorization
8
+ është aktiv
6
9
  action_not_authorized: Veprimi nuk është i autorizuar
10
+ assignment_authorization_missing: Caktimet përmes API-së kërkojnë config.api_assignment_authorization;
11
+ refuzohen sa kohë që nuk është vendosur dhe config.api_require_authorization
12
+ është aktiv
7
13
  assignment_not_authorized: Caktimi nuk është i autorizuar
14
+ body_unreadable: Përmbajtja e kërkesës nuk mund të lexohet. Dërgoni JSON të
15
+ vlefshëm me Content-Type application/json.
16
+ boolean_invalid: duhet të jetë true ose false
17
+ bulk_action_invalid: duhet të jetë assign ose revoke
18
+ expires_at_past: duhet të jetë në të ardhmen
8
19
  field_generation_failed: Fushat për këtë burim nuk mund të gjenerohen
20
+ field_value_shape: duhet të jetë varg, numër, true ose false; listë e tyre
21
+ (asnjë me presje) vetëm për in, not_in dhe between
22
+ flag_shape: duhet të jetë varg ose null
9
23
  forbidden: E ndaluar
24
+ hour_shape: duhet të jetë numër i plotë nga 0 deri në 23, ose null
25
+ integer_shape: duhet të jetë numër i plotë
26
+ ip_list_empty: nuk ka asnjë hyrje; dërgoni null për ta hequr kushtin
27
+ ip_list_shape: duhet të jetë varg ose listë vargjesh (adresa IP ose diapazone
28
+ CIDR), ose null
10
29
  not_editable: Ky regjistrim nuk mund të redaktohet
11
30
  not_found: Regjistrimi nuk u gjet
31
+ not_iso8601_time: nuk është datë ose kohë ISO 8601
32
+ not_null: Mungon një vlerë e detyrueshme. Asgjë nuk u ruajt.
33
+ record_not_unique: Një kërkesë tjetër e ruajti të njëjtin regjistrim një çast
34
+ më parë; ai ekziston tashmë
35
+ resource_names_no_model: nuk emërton asnjë model që ky aplikacion mund ta
36
+ ngarkojë
37
+ route_not_found: Asnjë pikë fundore e API-së nuk i përgjigjet këtij shtegu
38
+ dhe kësaj metode
39
+ section_missing: mungon, është bosh ose nuk është objekt
40
+ stats_authorization_missing: GET /api/stats kërkon config.api_stats_authorization,
41
+ ose config.api_stats_require_admin = false
12
42
  tenant_required: Kjo kërkesë nuk ka qiramarrës. API-ja e administrimit shërben
13
43
  një qiramarrës në një kohë.
44
+ text_shape: duhet të jetë varg
45
+ unauthorized: Nuk jeni i autentikuar
46
+ user_id_invalid: nuk është id përdoruesi
47
+ user_id_missing: mungon
48
+ user_ids_missing: duhet të emërtojë të paktën një përdorues
49
+ user_ids_not_list: duhet të jetë listë id-sh përdoruesish
50
+ user_not_found: nuk emërton askënd që mund të caktohet
14
51
  assignments:
15
52
  confirm_destroy:
16
53
  body: "%{name} do të humbasë qasjen në %{resources}, përveç nëse një Grup
@@ -32,6 +69,7 @@ sq:
32
69
  expires: Skadon
33
70
  filter_sets: Filtro Grupet e lejeve
34
71
  forever: pa datë përfundimi
72
+ locked_hint: 'Menaxhohet nga sistemi/API: këtu nuk mund të shtohen mbajtës.'
35
73
  muting_notice: "⊘ Heshtës. %{sets} i heq qasjen %{name}, pavarësisht çfarë
36
74
  lejojnë grupet e tjera."
37
75
  no_sets: Asnjë Grup lejesh nuk përputhet.
@@ -106,6 +144,7 @@ sq:
106
144
  all_for_record: Të gjitha ngjarjet e këtij regjistrimi
107
145
  all_for_set: Të gjitha ngjarjet e këtij Grupi lejesh
108
146
  all_in_action: Të gjitha ngjarjet e këtij veprimi
147
+ all_unknown_actor: Të gjitha ngjarjet pa aktor të njohur
109
148
  attribute: Atributi
110
149
  before: Para
111
150
  changes: Para dhe pas
@@ -130,23 +169,31 @@ sq:
130
169
  snapshot_destroyed: Regjistrimi siç ishte kur u hoq.
131
170
  source: Ku
132
171
  title: Ngjarje auditimi %{event}
172
+ unknown_actor_html: Për këtë ndryshim nuk u emërtua asnjë aktor (kod i ekzekutuar
173
+ jashtë një kërkese, si një runner ose një punë në sfond). Emërtojeni me
174
+ %{method}.
133
175
  uuid: Id e ngjarjes
134
176
  value: Vlera
135
177
  what: Çfarë
136
178
  who: Kush, ku dhe pse
137
179
  audit_log:
180
+ actor_codes:
181
+ api_client: Klient API
182
+ boot: Nisja e aplikacionit
138
183
  actor_named:
139
184
  api: "%{name} (API)"
140
185
  basic_auth: "%{name} (dritarja e fjalëkalimit)"
141
- actor_types:
142
- api: Klient API
143
- basic_auth: Dritarja e fjalëkalimit
144
- system: Sistemi
145
- unknown: I panjohur
146
- user: Person
147
186
  boolean:
148
187
  'false': Jo
149
188
  'true': Po
189
+ cache_scope:
190
+ own_process: 'Lejet e ruajtura në cache u pastruan vetëm në procesin që e
191
+ kreu (një ruajtje në memorie): çdo proces tjetër i mbajti të tyret.'
192
+ server_process: 'Lejet e ruajtura në cache u pastruan vetëm në këtë proces
193
+ të serverit (një ruajtje në memorie): punëtorët e tjerë të uebit dhe proceset
194
+ e punëve i mbajtën të tyret.'
195
+ unconfirmed: 'Ruajtja e cache-it jeton në secilin proces (një ruajtje në memorie):
196
+ proceset e tjera i mbajnë lejet e tyre të ruajtura sido që të jetë.'
150
197
  categories:
151
198
  access: Qasje
152
199
  admin: Administrim
@@ -175,6 +222,8 @@ sq:
175
222
  page_of: Faqja %{page} nga %{pages}
176
223
  pages_label: Faqet
177
224
  person_id: 'Personi #%{id}'
225
+ reason_codes:
226
+ expired: Data e mbarimit kishte kaluar
178
227
  reason_inline: 'Arsyeja: %{reason}'
179
228
  refused:
180
229
  body: Leximi i regjistrit të auditimit kufizohet nga cilësimi audit_log_authorization,
@@ -184,8 +233,17 @@ sq:
184
233
  sentence_variants:
185
234
  assignment_revoked_expired: "%{actor} i hoqi %{person} Grupin e lejeve %{set}
186
235
  pasi kishte skaduar më %{date}."
236
+ cache_cleared_unconfirmed: "%{actor} kërkoi të pastrohen lejet e ruajtura
237
+ në cache të çdo përdoruesi, por ruajtja e cache-it nuk e konfirmoi: lejet
238
+ e vjetra mund të mbeten në përdorim derisa të mbarojë jetëgjatësia e cache-it."
239
+ cache_settled_unconfirmed: 'Lejet e ruajtura në cache të %{person} duhej të
240
+ pastroheshin pas ndryshimit nga %{actor}, por ruajtja e cache-it nuk e konfirmoi:
241
+ të vjetrat mund të mbeten në përdorim derisa të mbarojë jetëgjatësia e cache-it.'
187
242
  field_access_limited: "%{actor} lexoi %{record} me këto fusha të fshehura
188
243
  ose të maskuara: %{fields}."
244
+ permissions_invalidated_unconfirmed: 'Lejet e ruajtura në cache të %{person}
245
+ duhej të pastroheshin, por ruajtja e cache-it nuk e konfirmoi: të vjetrat
246
+ mund të mbeten në përdorim derisa të mbarojë jetëgjatësia e cache-it.'
189
247
  sentences:
190
248
  access:
191
249
  denied: Qasja e %{actor} te %{record} u refuzua.
@@ -210,6 +268,8 @@ sq:
210
268
  viewed: "%{actor} pa të dhëna auditimi."
211
269
  cache:
212
270
  cleared: "%{actor} pastroi lejet e ruajtura në cache të të gjithë përdoruesve."
271
+ settled: Lejet e ruajtura në cache të %{person} u pastruan pas ndryshimit
272
+ nga %{actor}.
213
273
  cleanup:
214
274
  expired_assignments: "%{actor} hoqi caktimet e skaduara."
215
275
  consent:
@@ -222,6 +282,8 @@ sq:
222
282
  access: "%{actor} lexoi %{record}."
223
283
  sensitive_acknowledged: "%{actor} konfirmoi që fusha %{record} te %{set}
224
284
  duhet të lexohet pa maskë."
285
+ unmasked_without_user: Një fushë e %{model} u lexua pa maskë në një kërkesë
286
+ web kur askush nuk kishte hyrë.
225
287
  group_membership:
226
288
  added: "%{actor} shtoi %{person} te %{group}."
227
289
  changed: "%{actor} ndryshoi anëtarësinë e %{person} te %{group}."
@@ -318,6 +380,9 @@ sq:
318
380
  will_assign:
319
381
  one: "%{count} do të caktohet"
320
382
  other: "%{count} do të caktohen"
383
+ denials:
384
+ no_read_access: Nuk keni leje për të lexuar regjistrimet e %{resource}.
385
+ rule_default: Nuk keni leje për të kryer këtë veprim.
321
386
  errors:
322
387
  admin:
323
388
  action_format: Përdor shkronja të vogla, numra dhe nënviza, duke filluar me
@@ -328,6 +393,10 @@ sq:
328
393
  flag: Flamujt e sesionit mund të përmbajnë vetëm shkronja, numra, pika, dy
329
394
  pika, viza dhe nënviza.
330
395
  group_blank: Jepi një emër grupimit.
396
+ hours_equal: Ora e fillimit dhe e mbarimit duhet të ndryshojnë (një dritare
397
+ nga 9 në 9 është bosh).
398
+ hours_incomplete: Zgjidhni edhe orën e fillimit, edhe atë të mbarimit.
399
+ hours_range: Zgjidhni orë ndërmjet 00:00 dhe 23:00.
331
400
  ip: 'Rreshti %{line}: “%{ip}” nuk është adresë IP ose diapazon CIDR i vlefshëm.'
332
401
  person: Zgjidh së pari një person.
333
402
  resource_model: Zgjidh një model nga lista.
@@ -375,9 +444,40 @@ sq:
375
444
  assigned:
376
445
  one: "%{set} iu caktua %{count} personi."
377
446
  other: "%{set} iu caktua %{count} personave."
447
+ assigned_cache_kept:
448
+ one: "%{set} iu caktua %{count} personi, por ruajtja e cache-it nuk konfirmoi
449
+ që lejet e tij të ruajtura u pastruan. Lejet e vjetra mund të mbeten në
450
+ përdorim derisa të mbarojë jetëgjatësia e cache-it."
451
+ other: "%{set} iu caktua %{count} personave, por ruajtja e cache-it nuk
452
+ konfirmoi që lejet e tyre të ruajtura u pastruan. Lejet e vjetra mund
453
+ të mbeten në përdorim derisa të mbarojë jetëgjatësia e cache-it."
378
454
  revoked:
379
455
  one: "%{set} iu hoq %{count} personi."
380
456
  other: "%{set} iu hoq %{count} personave."
457
+ revoked_cache_kept:
458
+ one: "%{set} iu hoq %{count} personi, por ruajtja e cache-it nuk konfirmoi
459
+ që lejet e tij të ruajtura u pastruan. Lejet e vjetra mund të mbeten në
460
+ përdorim derisa të mbarojë jetëgjatësia e cache-it."
461
+ other: "%{set} iu hoq %{count} personave, por ruajtja e cache-it nuk konfirmoi
462
+ që lejet e tyre të ruajtura u pastruan. Lejet e vjetra mund të mbeten
463
+ në përdorim derisa të mbarojë jetëgjatësia e cache-it."
464
+ cache_not_confirmed: 'Ruajtja e cache-it nuk konfirmoi që lejet e ruajtura u
465
+ pastruan: lejet e vjetra mund të mbeten në përdorim derisa të mbarojë jetëgjatësia
466
+ e cache-it.'
467
+ cache_process_local: 'Ruajtja e cache-it jeton vetëm në këtë proces të serverit
468
+ (një ruajtje në memorie): punëtorët e tjerë të uebit dhe proceset e punëve
469
+ i mbajnë lejet e tyre të ruajtura derisa të rinisen ose derisa hyrjet të skadojnë.'
470
+ copy_refused:
471
+ kinds:
472
+ permission_set: Grupi i lejeve “%{name}”
473
+ permission_set_group: Permission Set Group “%{name}”
474
+ permission_set_rule: rregulli “%{name}”
475
+ record: një rresht
476
+ resource: Resource “%{name}”
477
+ resource_action: veprimi “%{name}”
478
+ resource_field: fusha “%{name}”
479
+ message: "“%{name}” nuk u kopjua: %{record} mban diçka që një rresht i ri
480
+ nuk mund ta mbajë (%{errors}). Korrigjojeni, pastaj kopjoni përsëri."
381
481
  fields:
382
482
  acknowledged: Në rregull. “%{field}” nuk do të shënohet më në auditimin e
383
483
  privatësisë.
@@ -391,6 +491,7 @@ sq:
391
491
  set_added: "“%{set}” u zhvendos në këtë grupim."
392
492
  set_removed: "“%{set}” u hoq nga ky grupim."
393
493
  updated: Grupimi u ruajt. Qasja e askujt nuk ndryshoi.
494
+ invalid_param: "%{param} %{detail}. Asgjë nuk u ndryshua."
394
495
  locked_widening: 'Ky grup lejesh është i kyçur: qasja mund të hiqet ose të shkurtohet,
395
496
  jo të jepet ose të zgjatet.'
396
497
  locked_widening_muting: 'Ky grup lejesh heshtës është i kyçur: mbajtësit mund
@@ -400,7 +501,17 @@ sq:
400
501
  cleaned:
401
502
  one: U hoq %{count} caktim i skaduar.
402
503
  other: U hoqën %{count} caktime të skaduara.
504
+ cleaned_cache_kept:
505
+ one: U hoq %{count} caktim i skaduar, por ruajtja e cache-it nuk konfirmoi
506
+ që lejet e ruajtura të personave të prekur u pastruan. Lejet e vjetra
507
+ mund të mbeten në përdorim derisa të mbarojë jetëgjatësia e cache-it.
508
+ other: U hoqën %{count} caktime të skaduara, por ruajtja e cache-it nuk
509
+ konfirmoi që lejet e ruajtura të personave të prekur u pastruan. Lejet
510
+ e vjetra mund të mbeten në përdorim derisa të mbarojë jetëgjatësia e cache-it.
511
+ no_changes: Nuk ka ndryshime për të ruajtur.
403
512
  not_editable: Ky regjistrim nuk mund të ndryshohet.
513
+ not_null: Mungonte një vlerë e detyrueshme. Asgjë nuk u ndryshua; faqja tregon
514
+ çfarë ka tani.
404
515
  people:
405
516
  cache_refresh_failed: Lejet e ruajtura të %{name} nuk mund të rifreskoheshin.
406
517
  Ruajtja e cache-it nuk e konfirmoi, prandaj lejet e vjetra mund të mbeten
@@ -443,23 +554,33 @@ sq:
443
554
  duplicated_outside_group: 'U dublikua “%{name}”: u kopjuan burimet, fushat,
444
555
  veprimet dhe rregullat. Caktimet nuk u kopjuan. Kopja nuk është në “%{group}”,
445
556
  që është i kyçur.'
446
- no_changes: Nuk ka ndryshime për të ruajtur.
557
+ nothing_applied: 'Asgjë për të ruajtur: %{reasons}.'
447
558
  save_failed: 'Asgjë nuk u ruajt: %{errors}'
448
559
  saved:
449
560
  one: U ruajt %{count} ndryshim. Tani vlen për %{people}.
450
561
  other: U ruajtën %{count} ndryshime. Tani vlejnë për %{people}.
451
562
  switched_granting: "“%{name}” tani jep qasje."
452
563
  switched_muting: "“%{name}” tani është Grup lejesh heshtës."
564
+ record_not_unique: Një kërkesë tjetër e ruajti të njëjtën gjë një çast më parë.
565
+ Asgjë nuk u ndryshua; faqja tregon gjendjen e tanishme.
566
+ record_not_unique_detail: "%{detail} — një kërkesë tjetër e ruajti një çast
567
+ më parë. Asgjë nuk u ndryshua; faqja tregon gjendjen e tanishme."
453
568
  resources:
454
569
  added:
455
570
  one: U shtua %{resource} me %{count} fushë.
456
571
  other: U shtua %{resource} me %{count} fusha.
572
+ added_muting: U shtua %{resource}. Heq %{what}.
573
+ added_muting_nothing: 'U shtua %{resource}. Ende nuk heq asgjë: zgjidhni më
574
+ poshtë çfarë heq.'
457
575
  columns_added:
458
576
  one: U shtua %{count} kolonë.
459
577
  other: U shtuan %{count} kolona.
460
578
  missing_removed:
461
579
  one: U hoq %{count} fushë, kolona e së cilës nuk ekziston më.
462
580
  other: U hoqën %{count} fusha, kolonat e të cilave nuk ekzistojnë më.
581
+ muted_fields:
582
+ one: "%{count} fushë"
583
+ other: "%{count} fusha"
463
584
  removed: U hoq %{resource} nga “%{set}”.
464
585
  rules:
465
586
  created: U shtua rregulli “%{rule}”.
@@ -476,6 +597,29 @@ sq:
476
597
  'off': Regjistrimi është çaktivizuar në inicializues (audit_events = false).
477
598
  Asnjë ndryshim nuk regjistrohet.
478
599
  title: Regjistri i auditimit nuk po regjistron
600
+ broken_rules_card:
601
+ description: 'Këto rregulla regjistrimesh përmendin një fushë, tabelë, lidhje
602
+ ose kusht që nuk ekziston, ose një vlerë që fusha e tyre nuk mund ta mbajë.
603
+ Secili nuk përputhet me asgjë: kujtdo që i zbatohet i refuzohet çdo regjistrim
604
+ i burimit.'
605
+ fix: Rregullo rregullin
606
+ locked_fix_html: 'I kyçur (%{flag}): menaxhohet nga sistemi ose API që e krijoi,
607
+ prandaj rregullojeni rregullin atje (ose zhbllokojeni grupin në kod). Një
608
+ kopje e bërë këtu e lë këtë rregull siç është.'
609
+ open: Hap rregullat
610
+ people:
611
+ one: "%{count} person e ka këtë grup."
612
+ other: "%{count} persona e kanë këtë grup."
613
+ rule: "“%{rule}” te %{resource} në “%{set}”"
614
+ title: Rregulla që nuk përputhen me asgjë
615
+ conditions_card:
616
+ description: Këto grupe kanë një kusht që nuk mund të gjykohet (një IP që
617
+ nuk është adresë, asnjë hyrje, ose një dritare orësh e prishur).
618
+ open: Rregullo kushtet
619
+ people:
620
+ one: "%{count} person e ka këtë grup."
621
+ other: "%{count} persona e kanë këtë grup."
622
+ title: Kushte aktivizimi që askush nuk mund t’i gjykojë
479
623
  ending_card:
480
624
  description: Caktime që përfundojnë në 7 ditët e ardhshme.
481
625
  extend: Zgjat 30 ditë
@@ -521,8 +665,9 @@ sq:
521
665
  people:
522
666
  one: "%{count} person ka"
523
667
  other: "%{count} persona kanë"
524
- search_placeholder: Kërkoni një person sipas emrit ose email-it për të parë
525
- çfarë mund të shohë dhe pse
668
+ search_help: Kërkoni një person sipas emrit ose email-it për të parë çfarë
669
+ mund të shohë dhe pse
670
+ search_placeholder: Emër ose email
526
671
  sets:
527
672
  one: "%{count} Grup lejesh aktiv"
528
673
  other: "%{count} Grupe lejesh aktive"
@@ -531,10 +676,25 @@ sq:
531
676
  one: "%{count} gjë për t'u rishikuar"
532
677
  other: "%{count} gjëra për t'u rishikuar"
533
678
  title: Kërkon vëmendje
679
+ mask_strategies_card:
680
+ description: Asnjë strategji maskimi e integruar dhe asnjë strategji e personalizuar
681
+ nuk ka këto emra, ndaj vlerat e tyre maskohen plotësisht derisa të zgjidhni
682
+ një strategji ose të ktheni atë të personalizuarën.
683
+ field: "“%{field}” te %{resource} në “%{set}”"
684
+ fix: Rregullo fushën
685
+ people:
686
+ one: "%{count} person e ka këtë grup."
687
+ other: "%{count} persona e kanë këtë grup."
688
+ strategy_html: Strategjia %{strategy}
689
+ title: Fusha të maskuara me një strategji të panjohur
534
690
  privacy_card:
691
+ by_name_note: Fushat shënohen sipas emrit të kolonës, prandaj disa mund të
692
+ mos jenë të dhëna personale (p.sh. emri i një kompanie).
535
693
  description: "%{unmasked}, %{unconfigured}."
536
694
  fix: Rregullo
537
695
  intended: Kjo është e qëllimshme
696
+ intended_note: Nëse një fushë mund të shihet pa maskë, zgjidhni Kjo është
697
+ e qëllimshme.
538
698
  per_set_note: Çdo rresht shikon një Grup lejesh më vete. Një person që ka
539
699
  edhe një grup tjetër që e konfiguron fushën ndjek atë grup.
540
700
  show_all: Shfaq të %{count}
@@ -548,6 +708,7 @@ sq:
548
708
  unmasked:
549
709
  one: "%{count} fushë e ndjeshme shfaqet pa maskim"
550
710
  other: "%{count} fusha të ndjeshme shfaqen pa maskim"
711
+ view: Shiko fushën
551
712
  where: "%{resource} · Lexohet pa maskim në “%{set}” · %{people}"
552
713
  where_turned_off: "%{resource} · Cilësimi në “%{set}” është i çaktivizuar,
553
714
  prandaj fusha kalon pa maskim · %{people}"
@@ -573,6 +734,18 @@ sq:
573
734
  vlejnë vetëm aty ku aplikacioni përdor find_by ose permission_scoped. Kërkesat
574
735
  e tjera (where, all, lidhjet) kthejnë të gjitha regjistrimet.
575
736
  title: Rregulla regjistrimesh që nuk zbatohen kudo
737
+ secret_rules_card:
738
+ column_html: Krahason %{column}
739
+ description: Këto rregulla regjistrimesh krahasojnë një kolonë që mban një
740
+ sekret. Ato ende zbatohen, por kush sheh cilin regjistrim e zbulon sekretin.
741
+ Krahasoni një kolonë tjetër ose hiqni rregullin.
742
+ fix: Rregullo rregullin
743
+ open: Hap rregullat
744
+ people:
745
+ one: "%{count} person e ka këtë grup."
746
+ other: "%{count} persona e kanë këtë grup."
747
+ rule: "“%{rule}” te %{resource} në “%{set}”"
748
+ title: Rregulla mbi kolona sekrete
576
749
  stale_card:
577
750
  assigned: Caktuar më %{date} nga %{by}
578
751
  description: Nuk janë rishikuar prej më shumë se %{days} ditësh. Konfirmo
@@ -667,21 +840,20 @@ sq:
667
840
  one: " dhe %{count} tjetër"
668
841
  other: " dhe %{count} të tjera"
669
842
  from: nga %{set}
670
- muted_by: I fshehur nga %{set}
843
+ masked_by: E maskuar nga %{set}
844
+ muted_by: E fshehur nga %{set}
671
845
  none: Asnjë grup nuk e shfaq
672
- unconfigured: E pakonfiguruar · %{behaviour}
846
+ read_only_by: E kufizuar në Vetëm lexim nga %{set}
847
+ unconfigured: "%{state} · %{behaviour}"
673
848
  virtual: Fushë virtuale, e lexueshme si parazgjedhje
674
849
  effective_tab:
675
850
  conditional: "%{sets} vlejnë vetëm kur kushtet e tyre të aktivizimit plotësohen.
676
851
  Ato janë përfshirë këtu."
677
852
  fields_visible: "%{visible} nga %{total} fusha të dukshme"
678
853
  grid_label: Qasja efektive
679
- hidden_by_muting: I fshehur nga heshtja
680
854
  intro: Çfarë mund të bëjë %{name} tani, me të gjitha grupet bashkë. Zgjidh
681
855
  çdo qelizë për të parë pse.
682
856
  legend: Legjenda
683
- legend_muted: I heshtur
684
- legend_none: Nuk jepet
685
857
  why: Pse
686
858
  why_empty: Zgjidh një qelizë, fushë ose veprim për të parë cili Grup lejesh
687
859
  e shkaktoi.
@@ -690,10 +862,16 @@ sq:
690
862
  action_granted: "%{set} e lejon këtë veprim."
691
863
  action_muted: "%{set} e bllokon këtë veprim."
692
864
  action_none: Asnjë Grup lejesh nuk e lejon këtë veprim.
865
+ action_title: "%{action} · %{resource}"
866
+ field_base_unreadable: 'E fshehur: trashëgon nga %{resource}, ku Lexo nuk
867
+ lejohet.'
693
868
  field_capped: Shfaqet si Vetëm lexim sepse Ndrysho nuk lejohet për këtë burim.
694
- field_from: "%{set} e shfaq këtë fushë."
695
- field_muted: "%{set} e fsheh ose e maskon këtë fushë."
869
+ field_decided_by: 'Vendoset nga %{resource}, nga i cili trashëgon: fiton cilësimi
870
+ më i rreptë përgjatë trashëgimisë.'
871
+ field_hidden_on: E fshehur te %{resource}, nga i cili trashëgon.
696
872
  field_none: Asnjë Grup lejesh nuk e shfaq këtë fushë.
873
+ field_own_unreadable: E fshehur sepse Lexo nuk lejohet për këtë burim.
874
+ field_title: "%{resource} › %{field}"
697
875
  field_unconfigured: 'Asnjë grup nuk e konfiguron këtë kolonë: %{behaviour}.'
698
876
  field_variant: Ndjek cilësimin e %{base}.
699
877
  field_virtual: Fushë virtuale nga modeli, e lexueshme përveç nëse një grup
@@ -701,6 +879,7 @@ sq:
701
879
  flag_granted: "%{set} jep %{flag}."
702
880
  flag_muted: "%{set} hesht %{flag}."
703
881
  flag_none: Asnjë Grup lejesh nuk jep %{flag}.
882
+ flag_title: "%{flag} %{resource}"
704
883
  no_rules: Nuk ka rregulla regjistrimesh, prandaj shfaqet çdo regjistrim.
705
884
  note_add_up: 'Grupet e lejeve mblidhen: mjafton një leje.'
706
885
  note_fields: Nëse disa grupe e shfaqin një fushë, fiton cilësimi më i hapur.
@@ -765,7 +944,10 @@ sq:
765
944
  dhe pastron emrin nga regjistri i auditimit.
766
945
  title: Fshirja e të dhënave të subjektit…
767
946
  refresh:
768
- desc: 'Rrallë nevojitet: ndryshimet vlejnë tashmë menjëherë.'
947
+ desc: 'Nevojitet pas një ndryshimi nga konsola, një runner ose një punë
948
+ në sfond kur cache-i është për proces (memory store): ai proces pastroi
949
+ vetëm hyrjet e veta, kështu që ky proces web vazhdon të japë lejet e
950
+ vjetra derisa të skadojnë.'
769
951
  title: Rifresko lejet e ruajtura
770
952
  remove_all:
771
953
  desc: 'Largim nga puna: heq çdo caktim.'
@@ -838,10 +1020,12 @@ sq:
838
1020
  field: Zgjidh fushën për t'u kontrolluar.
839
1021
  list: Shto të paktën një vlerë në listë.
840
1022
  name_blank: Jepi një emër rregullit.
1023
+ operator: Zgjidhni një kusht nga lista.
841
1024
  range: Plotëso të dy skajet e diapazonit.
842
1025
  value: Shkruaj një vlerë, ose zgjidh “përdoruesi aktual”.
843
1026
  field: Fusha për t'u kontrolluar
844
1027
  follow: Ndiq një lidhje
1028
+ ignored_field: pa rresht fushe (ignored_fields)
845
1029
  ignored_warning: Shiko të gjitha është aktiv për këtë burim, prandaj rregullat
846
1030
  e regjistrimeve injorohen derisa të çaktivizohet.
847
1031
  include_nulls: Shfaq edhe regjistrimet ku %{field} është bosh
@@ -858,19 +1042,36 @@ sq:
858
1042
  desc: Regjistrimet pa regjistrimin e lidhur mbahen.
859
1043
  title: Edhe regjistrimet pa të
860
1044
  message: Mesazhi i bllokimit
861
- message_placeholder: Shfaqet kur dikush hap një regjistrim që ky rregull e
862
- fsheh.
1045
+ message_help: Shfaqet kur dikush hap një regjistrim që ky rregull e fsheh.
1046
+ model_error: "%{field} %{message}"
863
1047
  model_missing: Ky model ose lidhje nuk ekziston më në aplikacion.
864
1048
  name: Emri i rregullit
865
1049
  name_placeholder: p.sh. Klientët e mi
1050
+ notes:
1051
+ secret_column:
1052
+ body_html: "%{column} mban një sekret, ndaj një rregull i ri mbi të refuzohet.
1053
+ Ky rregull ende zbatohet, por kush sheh cilin regjistrim e zbulon sekretin:
1054
+ krahasoni një kolonë tjetër ose hiqni rregullin."
1055
+ title: Ky rregull krahason një kolonë që mban një sekret
866
1056
  operator: Kushti
867
1057
  optional: opsionale
1058
+ path_html: 'Shtegu i lidhjeve: %{path}'
868
1059
  pick_field: Zgjidh një fushë…
1060
+ pick_relationship: Zgjidh një lidhje…
869
1061
  preview: Pamja paraprake
870
1062
  preview_empty: Zgjidh një fushë për ta parë rregullin si fjali.
1063
+ preview_refused: Nuk do të ruhet
1064
+ problem_fixes:
1065
+ field: Zgjidhni sërish fushën për ta korrigjuar.
1066
+ join: Zgjidhni sërish mënyrën e kombinimit, te Të avancuara, për ta korrigjuar.
1067
+ operator: Zgjidhni sërish kushtin për ta korrigjuar.
1068
+ path: Zgjidhni sërish lidhjen për ta korrigjuar.
1069
+ value: Shkruani një vlerë që kjo fushë mund ta mbajë, për ta korrigjuar.
1070
+ problem_title: Ky rregull nuk përputhet me asgjë
871
1071
  relationship: Lidhja
872
1072
  remove_step: Hiq këtë hap të lidhjes
873
1073
  save: Ruaj rregullin
1074
+ stored_field: "%{name} (siç është ruajtur)"
874
1075
  this_field: kjo fushë
875
1076
  update_form: Përditëso
876
1077
  confirm_destroy:
@@ -881,6 +1082,9 @@ sq:
881
1082
  title: Ndrysho rregullin për %{resource}
882
1083
  new:
883
1084
  title: Rregull i ri për %{resource}
1085
+ preview:
1086
+ back: Kthehu te rregullat
1087
+ title: Pamje paraprake e një rregulli për %{resource}
884
1088
  value_input:
885
1089
  from: Nga
886
1090
  no_value: Nuk nevojitet vlerë për këtë kusht.
@@ -982,7 +1186,7 @@ sq:
982
1186
  copy_name: "%{name} (kopje)"
983
1187
  header:
984
1188
  description: Përshkrimi
985
- description_placeholder: Shto një përshkrim që të tjerët ta dinë kur ta përdorin
1189
+ description_placeholder: 'Shto një përshkrim: kur përdoret'
986
1190
  group: Grupimi
987
1191
  name: Emri
988
1192
  index:
@@ -1067,6 +1271,7 @@ sq:
1067
1271
  body_nobody: Ende askush nuk e ka këtë grup, prandaj ruajtja nuk prek askënd
1068
1272
  derisa ta caktosh.
1069
1273
  crumb: Rishiko
1274
+ not_applied: 'Nuk u zbatua:'
1070
1275
  save: Ruaj ndryshimet
1071
1276
  title:
1072
1277
  one: Rishiko %{count} ndryshim
@@ -1123,10 +1328,15 @@ sq:
1123
1328
  këtij burimi, ose shkruaj një çelës që e kontrollon kodi yt.
1124
1329
  permitted: I lejuar
1125
1330
  managed_note:
1126
- body: Sapo një Grup lejesh aktiv ka një rresht për një veprim, vetëm personat
1127
- që e kanë të lejuar nga Grupet e tyre të lejeve mund ta kryejnë. Të gjithë
1128
- të tjerëve u refuzohet.
1129
- title: Shtimi i një veprimi e bën të menaxhuar për të gjithë
1331
+ body_allowed: Sapo një Grup lejesh aktiv ka një rresht për një veprim, vetëm
1332
+ personat që e kanë të lejuar nga Grupet e tyre të lejeve mund ta kryejnë.
1333
+ Të gjithë të tjerëve u refuzohet.
1334
+ body_blocked: Derisa një Grup lejesh aktiv të ketë një rresht për një veprim,
1335
+ askush nuk mund ta kryejë. Pasi ta ketë, mund ta kryejnë personat që e kanë
1336
+ të lejuar nga Grupet e tyre të lejeve; të gjithëve të tjerëve vazhdon t'u
1337
+ refuzohet.
1338
+ title_allowed: Shtimi i një veprimi e bën të menaxhuar për të gjithë
1339
+ title_blocked: Shtimi i një veprimi ua hap atë personave që e kanë të lejuar
1130
1340
  unmanaged_allowed: Një veprim që nuk e menaxhon asnjë Grup lejesh mund ta
1131
1341
  kryejnë të gjithë.
1132
1342
  unmanaged_blocked: Një veprim që nuk e menaxhon asnjë Grup lejesh është i
@@ -1151,9 +1361,17 @@ sq:
1151
1361
  capped: Shfaqet si Vetëm lexim sepse Ndrysho nuk lejohet për këtë burim.
1152
1362
  full_picture: Shiko gjithçka që %{name} mund të shohë →
1153
1363
  granted: "%{name} e sheh përmes %{sets}."
1154
- muted: "%{name} nuk e sheh të plotë sepse %{sets} e fsheh ose e maskon."
1364
+ hidden_by:
1365
+ one: "%{name} nuk e sheh: %{sets} e fsheh."
1366
+ other: "%{name} nuk e sheh: %{sets} e fshehin."
1367
+ masked_by:
1368
+ one: "%{name} e sheh të maskuar: %{sets} e maskon."
1369
+ other: "%{name} e sheh të maskuar: %{sets} e maskojnë."
1155
1370
  no_access: "%{name} nuk mund të lexojë %{resources}."
1156
1371
  none: Asnjë grup nuk ia shfaq këtë fushë %{name}.
1372
+ read_only_by:
1373
+ one: "%{name} nuk mund ta ndryshojë: %{sets} heq mundësinë e ndryshimit."
1374
+ other: "%{name} nuk mund ta ndryshojë: %{sets} heqin mundësinë e ndryshimit."
1157
1375
  unconfigured: Asnjë grup nuk e konfiguron këtë kolonë, prandaj për %{name}
1158
1376
  vendos cilësimi për fushat e pakonfiguruara.
1159
1377
  virtual_default: "%{name} e merr këtë fushë virtuale si parazgjedhje, të lexueshme
@@ -1175,6 +1393,7 @@ sq:
1175
1393
  flags_muting_note: Në grupet heshtëse këta flamuj do të thonë “hiq”.
1176
1394
  impact: Ruajtja vlen menjëherë për %{people}.
1177
1395
  label: Etiketa
1396
+ locked_impact: E kyçur, kështu që asgjë këtu nuk mund të ruhet.
1178
1397
  mask_strategy: Strategjia e maskimit
1179
1398
  muting_note: Ky është Grup lejesh heshtës. Zgjedhjet këtu heqin qasje.
1180
1399
  no_rules: Asnjë rregull në këtë grup nuk filtron sipas kësaj fushe.
@@ -1183,15 +1402,20 @@ sq:
1183
1402
  not_configured_implicit: 'Nuk ka cilësim për këtë fushë në “%{set}”. Ndjek
1184
1403
  “Fushat virtuale pa cilësim”: me konfigurimin aktual është e lexueshme dhe
1185
1404
  e ndryshueshme si parazgjedhje.'
1405
+ not_configured_muting: Asnjë cilësim për këtë kolonë në “%{set}”, prandaj
1406
+ ky Grup lejesh heshtës nuk heq asgjë prej saj.
1186
1407
  pick_person: Zgjidh një person…
1187
1408
  save: Ruaj
1188
- sensitive: 'Përputhet me modelin e privatësisë “%{pattern}”. Rekomandohet:
1189
- I maskuar (%{strategy}).'
1409
+ sensitive: 'Përputhet me modelin e privatësisë “%{pattern}”, prandaj mund
1410
+ të jetë e dhënë personale. Rekomandohet: I maskuar (%{strategy}).'
1190
1411
  turned_off: 'Cilësimi për këtë fushë në “%{set}” është i çaktivizuar, prandaj
1191
1412
  nuk zbatohet. Me konfigurimin aktual fusha është: %{behaviour}.'
1192
1413
  turned_off_implicit: 'Cilësimi për këtë fushë në “%{set}” është i çaktivizuar,
1193
1414
  prandaj nuk zbatohet. Fusha ndjek “Fushat virtuale pa cilësim”: me konfigurimin
1194
1415
  aktual është e lexueshme dhe e ndryshueshme si parazgjedhje.'
1416
+ turned_off_muting: Cilësimi për këtë fushë në “%{set}” është i fikur, prandaj
1417
+ ky Grup lejesh heshtës nuk heq asgjë prej saj.
1418
+ unknown_strategy: "(e panjohur — maskohet plotësisht derisa të zgjidhni një)"
1195
1419
  used_by_rules: Përdoret nga rregullat
1196
1420
  variants: 'Vlen edhe për:'
1197
1421
  variants_muting: 'Heshtja e kësaj hesht edhe:'
@@ -1241,20 +1465,12 @@ sq:
1241
1465
  filter_label: Filtro fushat
1242
1466
  filters:
1243
1467
  all: Të gjitha
1244
- edit: I ndryshueshëm
1245
- hidden: I fshehur
1246
- hide: I fshehur
1247
- leave: Pa ndryshim
1248
- mask: Maskim i detyruar
1249
- masked: I maskuar
1250
- read: Vetëm lexim
1251
- sensitive: E ndjeshme
1252
- unconfigured: E pakonfiguruar
1253
1468
  implicit_grant: E ndryshueshme si parazgjedhje
1254
1469
  level: Niveli i qasjes
1255
1470
  level_aria: Niveli i qasjes për %{field}
1471
+ mutes_nothing: Nuk heq asgjë
1256
1472
  no_match: Asnjë fushë nuk përputhet.
1257
- not_configured: E pakonfiguruar · %{behaviour}
1473
+ not_configured: "%{state} · %{behaviour}"
1258
1474
  read_off: Aktivizo Lexo për %{resource} për të zgjedhur cilat fusha shohin
1259
1475
  personat.
1260
1476
  search: Kërko fusha
@@ -1276,15 +1492,17 @@ sq:
1276
1492
  models: Modelet
1277
1493
  no_models: Asnjë model nuk përputhet.
1278
1494
  note: Fushat do të krijohen nga kolonat dhe fushat virtuale të modelit.
1279
- note_gdpr: Fushat do të krijohen nga kolonat dhe fushat virtuale të modelit.
1495
+ note_gdpr: 'Fushat do të krijohen nga kolonat dhe fushat virtuale të modelit.
1280
1496
  Parazgjedhjet e privatësisë janë aktive, prandaj kolonat e ndjeshme fillojnë
1281
- si të maskuara.
1497
+ si të maskuara, përveç me Qasje e plotë: atëherë vetëm shënohen si të ndjeshme,
1498
+ që t''i maskoni ju.'
1282
1499
  presets:
1283
1500
  block_changes:
1284
1501
  desc: Hesht Krijo, Ndrysho, Fshi dhe çdo veprim.
1285
1502
  title: Blloko të gjitha ndryshimet
1286
1503
  full:
1287
- desc: Lexo, krijo, ndrysho dhe fshi. Të gjitha fushat të ndryshueshme.
1504
+ desc: Lexo, krijo, ndrysho dhe fshi. Të gjitha fushat të ndryshueshme,
1505
+ asnjë e maskuar.
1288
1506
  title: Qasje e plotë
1289
1507
  hide_sensitive:
1290
1508
  desc: Fsheh çdo kolonë që duket si e dhënë personale.
@@ -1310,7 +1528,7 @@ sq:
1310
1528
  all_queries: vlen për të gjitha kërkesat
1311
1529
  blocked_message: 'Mesazhi i bllokimit: “%{message}”'
1312
1530
  empty: 'Ende nuk ka rregulla, prandaj regjistrimet nuk kufizohen: kushdo me
1313
- këtë grup sheh çdo %{resources} që mund të lexojë.'
1531
+ këtë grup sheh çdo regjistrim të %{resource} që mund të lexojë.'
1314
1532
  empty_muting: Grupet e lejeve heshtës nuk shtojnë rregulla regjistrimesh.
1315
1533
  empty_view_all: Pa rregulla. Shiko të gjitha është aktiv, prandaj çdo regjistrim
1316
1534
  përfshihet gjithsesi.
@@ -1346,7 +1564,7 @@ sq:
1346
1564
  modify_all_needs: Kërkon Shiko të gjitha dhe Ndrysho.
1347
1565
  muting_hint: Veprimet e heshtura u hiqen personave me këtë grup, pavarësisht
1348
1566
  çfarë lejojnë grupet e tjera.
1349
- muting_note: Cilësimet këtu u heqin qasje personave të %{set}.
1567
+ muting_note: Cilësimet këtu u heqin qasje të gjithë atyre që kanë “%{set}”.
1350
1568
  needs_read_hint: Ndrysho dhe Fshi kërkojnë Lexo.
1351
1569
  record_scope: Shtrirja e regjistrimeve
1352
1570
  remove: Hiq %{resource} nga ky grup…
@@ -1368,7 +1586,7 @@ sq:
1368
1586
  read: Shto të gjitha të rejat si Vetëm lexim
1369
1587
  gdpr_off: Parazgjedhjet e privatësisë janë joaktive.
1370
1588
  gdpr_on: 'Parazgjedhjet e privatësisë janë aktive: kolonat e ndjeshme shtohen
1371
- si të maskuara.'
1589
+ si të maskuara, përveç me qasje të plotë (atëherë vetëm shënohen si të ndjeshme).'
1372
1590
  ignored_count:
1373
1591
  one: "%{count} e injoruar"
1374
1592
  other: "%{count} të injoruara"
@@ -1382,6 +1600,9 @@ sq:
1382
1600
  new_count:
1383
1601
  one: "%{count} kolonë e re e pakonfiguruar"
1384
1602
  other: "%{count} kolona të reja të pakonfiguruara"
1603
+ new_count_muting:
1604
+ one: "%{count} kolonë pa cilësim, prandaj nuk heq asgjë"
1605
+ other: "%{count} kolona pa cilësim, prandaj nuk heqin asgjë"
1385
1606
  new_title: Kolona të reja, të pakonfiguruara
1386
1607
  none: Asnjë
1387
1608
  remove_missing: Hiq fushat që mungojnë
@@ -1466,6 +1687,9 @@ sq:
1466
1687
  api_serializer_overrides:
1467
1688
  desc: Zëvendësime për mënyrën si shkruhen regjistrimet në përgjigjet e API-së.
1468
1689
  name: Serializues të personalizuar
1690
+ api_stats_authorization:
1691
+ desc: Vendos kush mund të lexojë statistikat e përdorimit përmes API-së.
1692
+ name: Kontrolli i statistikave të API-së
1469
1693
  api_stats_require_admin:
1470
1694
  desc: Vetëm administratorët mund të lexojnë statistikat e përdorimit përmes
1471
1695
  API-së.
@@ -1586,7 +1810,8 @@ sq:
1586
1810
  të mos i shfaqin.
1587
1811
  name: Filtro vlerat e ndjeshme nga regjistrat
1588
1812
  gdpr_defaults:
1589
- desc: Kolonat që duken personale maskohen si parazgjedhje kur shtohen.
1813
+ desc: Kolonat që duken personale maskohen si parazgjedhje kur shtohen, përveç
1814
+ kur shtohen me qasje të plotë.
1590
1815
  name: Parazgjedhjet e privatësisë
1591
1816
  gdpr_field_patterns:
1592
1817
  desc: Emrat e kolonave që përputhen me një model shënohen si të ndjeshëm
@@ -1619,10 +1844,13 @@ sq:
1619
1844
  kur kodi yt i lexon nga modeli.
1620
1845
  name: Masko fushat virtuale në modele
1621
1846
  masked_attributes_nil_user_strategy:
1622
- desc: 'Nëse modelet e maskuara kthejnë vlerat e ruajtura apo të fshehura
1623
- kur nuk ka përdorues aktual (punë në sfond, email-e, konsola). Modeli
1624
- i përdoruesit mbetet i lexueshëm: hyrja e lexon para se dikush të ketë
1625
- hyrë.'
1847
+ desc: 'Çfarë kthejnë modelet e maskuara kur nuk ka përdorues aktual. bypass:
1848
+ vlerat e ruajtura kudo (çdo lexim në një kërkesë web regjistrohet në log
1849
+ dhe publikohet si ngjarje auditimi). hide_in_requests: vlera të fshehura
1850
+ në kërkesat web (një faqe publike, një kontrollues që harroi hyrjen),
1851
+ vlerat e ruajtura në punët në sfond, detyrat rake dhe konsolë. hide: vlera
1852
+ të fshehura kudo. Modeli i përdoruesit mbetet i lexueshëm: hyrja e lexon
1853
+ para se dikush të ketë hyrë.'
1626
1854
  name: Atributet e maskuara kur askush nuk ka hyrë
1627
1855
  masked_write_protection:
1628
1856
  desc: Ndalon që një vlerë e maskuar si “•••• 4821” të ruhet mbi vlerën e
@@ -1632,6 +1860,11 @@ sq:
1632
1860
  desc: Nëse rregullat anashkalohen, mohojnë gjithçka ose ngrenë gabim kur
1633
1861
  nuk ka përdorues aktual.
1634
1862
  name: Rregullat e regjistrimeve kur askush nuk ka hyrë
1863
+ no_read_access_strategy:
1864
+ desc: 'Çfarë kthejnë kërkimet e regjistrimeve për një përdorues të hyrë,
1865
+ Grupet e lejeve të të cilit nuk japin Lexim mbi burimin: rreshtat që lejojnë
1866
+ rregullat e regjistrimeve (pa asnjë rregull, çdo rresht), ose asnjë.'
1867
+ name: Regjistrimet pa qasje leximi
1635
1868
  omit_hidden_in_attributes_hash:
1636
1869
  desc: Fushat e fshehura hiqen nga hash-et e atributeve në vend që të vendosen
1637
1870
  bosh.
@@ -1669,6 +1902,11 @@ sq:
1669
1902
  desc: Emri i variablit që i tregon bazës së të dhënave kush është përdoruesi
1670
1903
  aktual.
1671
1904
  name: Variabli i sesionit në bazën e të dhënave
1905
+ rule_secret_column_patterns:
1906
+ desc: Rregullat e regjistrimeve nuk mund të krahasojnë kolona që përputhen
1907
+ me këto modele (përmbledhje fjalëkalimesh, tokene, kolona encrypted_*).
1908
+ Një listë bosh i lejon.
1909
+ name: Modele kolonash sekrete
1672
1910
  snapshot_transactions:
1673
1911
  desc: 'Nëse një transaksion i bazës së të dhënave vazhdon t''i shohë të
1674
1912
  dhënat siç ishin kur filloi. Lejet e llogaritura brenda një transaksioni
@@ -1744,9 +1982,12 @@ sq:
1744
1982
  gdpr_defaults: Kolonat e reja të ndjeshme fillojnë të maskuara.
1745
1983
  http_basic_auth_enabled: Qasja në këto ekrane është e mbrojtur.
1746
1984
  masked_attributes_nil_user_strategy: Modelet e maskuara i fshehin vlerat kur
1747
- askush nuk ka hyrë (modeli i përdoruesit mbetet i lexueshëm për hyrjen).
1985
+ askush nuk ka hyrë, të paktën në kërkesat web (modeli i përdoruesit mbetet
1986
+ i lexueshëm për hyrjen).
1748
1987
  masked_write_protection: Vlerat e maskuara nuk ruhen kurrë mbrapsht.
1749
1988
  nil_user_strategy: Kodi pa përdorues të hyrë nuk sheh asnjë regjistrim.
1989
+ no_read_access_strategy: Përdoruesit e hyrë pa Lexim mbi një burim nuk shohin
1990
+ asnjë nga regjistrimet e tij.
1750
1991
  preset: Paracaktimi :strict mbyll cilësimet që si parazgjedhje e lënë qasjen
1751
1992
  të hapur.
1752
1993
  unconfigured_action_strategy: Veprimet e kontrolluesve që askush nuk i ka
@@ -1760,24 +2001,31 @@ sq:
1760
2001
  çaktivizuar, ose tabela e auditimit mungon). Me audit_events = true dhe
1761
2002
  pa tabelë, çdo ndryshim dështon (me strategjinë e parazgjedhur :raise).
1762
2003
  audit_trail_enabled: Askush nuk regjistrohet si krijues ose redaktues i regjistrimeve.
2004
+ auto_query_scoping: 'Rregullat e regjistrimeve janë në përdorim, por zbatohen
2005
+ vetëm te kërkimet find_by dhe permission_scoped: pyetjet e tjera kthejnë
2006
+ çdo regjistrim.'
1763
2007
  conditional_sets_strict_mode: Grupet me kushte trajtohen si aktive kur mungojnë
1764
- informacionet e kërkesës (fail-open).
2008
+ informacionet e kërkesës (mungesa e tyre e lë aksesin të hapur).
1765
2009
  http_basic_auth_enabled: Këto ekrane janë ose të bllokuara (kërkesa për fjalëkalim
1766
2010
  aktive, por pa kredenciale) ose të pambrojtura (pa fjalëkalim dhe pa kontrollues
1767
2011
  admini të personalizuar).
1768
2012
  masked_write_protection: Vlerat e maskuara mund të ruhen mbi të dhënat e vërteta.
2013
+ unconfigured_action_strategy: Veprimet e kontrolluesve që askush nuk i ka
2014
+ konfiguruar mund t'i kryejë çdo përdorues i identifikuar (zgjedhje e qartë
2015
+ kundër parazgjedhjes :block).
1769
2016
  unconfigured_field_strategy: Kolonat që askush nuk i ka konfiguruar u shfaqen
1770
2017
  pa maskim kujtdo që mund ta lexojë burimin.
1771
2018
  row:
1772
2019
  changed: Ndryshuar
1773
- default: 'Parazgjedhje: %{value}'
1774
- docs: 'Dokumentacioni i konfigurimit: %{key} ↗'
2020
+ default_html: 'Parazgjedhje: %{value}'
2021
+ docs_html: 'Dokumentacioni i konfigurimit: %{key} ↗'
1775
2022
  how_to_change: Si ta ndryshosh
1776
2023
  risk: Rrezik
1777
2024
  secure: I sigurt
1778
2025
  snippet_current: Fragmenti tregon vlerën aktuale.
1779
2026
  snippet_recommended: Fragmenti tregon vlerën e rekomanduar.
1780
- step_deploy: Bëj commit dhe deploy (ose rinis serverin lokalisht).
2027
+ step_deploy: Ruaj ndryshimin në kod dhe publiko aplikacionin (ose rinis serverin
2028
+ lokalisht).
1781
2029
  step_edit: Ndrysho skedarin më lart.
1782
2030
  step_reload: Rifresko këtë faqe për ta konfirmuar.
1783
2031
  sections:
@@ -1798,6 +2046,9 @@ sq:
1798
2046
  record_rules: Rregullat e regjistrimeve dhe kufizimi i kërkesave
1799
2047
  show:
1800
2048
  api_disabled_html: API-ja është e çaktivizuar (%{key}).
2049
+ attention:
2050
+ one: Faqja kryesore tregon %{count} gjë që kërkon vëmendje.
2051
+ other: Faqja kryesore tregon %{count} gjëra që kërkojnë vëmendje.
1801
2052
  changed_count:
1802
2053
  one: "%{count} i ndryshuar"
1803
2054
  other: "%{count} të ndryshuar"
@@ -1805,15 +2056,19 @@ sq:
1805
2056
  has_risk: Ka një cilësim të rrezikshëm
1806
2057
  health: Përmbledhja e gjendjes
1807
2058
  how_to_fix: Si ta rregullosh
1808
- intro_html: Cilësimet përcaktohen në %{file}. Ndryshimet kërkojnë deploy/rinisje.
1809
- Kjo faqe tregon vlerat aktuale dhe si t'i ndryshosh.
2059
+ intro_html: Cilësimet përcaktohen në %{file}. Ndryshimet kërkojnë publikim
2060
+ të ri ose rinisje. Kjo faqe tregon vlerat aktuale dhe si t'i ndryshosh.
1810
2061
  no_match: Asnjë cilësim nuk përputhet.
2062
+ open_home: Hap faqen kryesore
1811
2063
  read_only: Vetëm lexim
1812
2064
  search: Kërko cilësime
1813
2065
  section_meta: "%{settings} · %{changed}"
1814
2066
  secure_count:
1815
2067
  one: "%{count} cilësim sigurie dhe privatësie duket në rregull."
1816
2068
  other: "%{count} cilësime sigurie dhe privatësie duken në rregull."
2069
+ secure_count_set:
2070
+ one: "%{count} cilësim sigurie dhe privatësie është vendosur siç rekomandohet."
2071
+ other: "%{count} cilësime sigurie dhe privatësie janë vendosur siç rekomandohet."
1817
2072
  settings_count:
1818
2073
  one: "%{count} cilësim"
1819
2074
  other: "%{count} cilësime"
@@ -1847,18 +2102,17 @@ sq:
1847
2102
  set: I vendosur
1848
2103
  shared:
1849
2104
  across_sets:
1850
- muted_hidden: 'I heshtur: i fshehur'
1851
2105
  none: Asnjë Grup lejesh nuk e përfshin këtë burim.
1852
2106
  active: Aktiv
1853
2107
  audit_footer:
1854
2108
  created: Krijuar nga %{created_by} · %{created_at}
1855
2109
  disabled: Nuk regjistrohet kush krijoi dhe kush ndryshoi.
1856
2110
  edited: Ndryshuar së fundi nga %{updated_by} · %{updated_at}
2111
+ edited_at: Ndryshuar së fundi %{updated_at}
1857
2112
  history: Historiku
1858
2113
  crud_cell:
1859
2114
  allowed: Lejohet
1860
2115
  muted: I heshtur
1861
- needs_read: Aktivizo së pari Lexo
1862
2116
  needs_read_short: Kërkon Lexo
1863
2117
  'no': Jo
1864
2118
  unchanged: Pa ndryshim
@@ -1920,8 +2174,6 @@ sq:
1920
2174
  copied: U kopjua
1921
2175
  copy: Kopjo
1922
2176
  summary: Detaje teknike
1923
- time_ago: "%{time} më parë"
1924
- time_nil: "—"
1925
2177
  toasts:
1926
2178
  dismiss: Mbyll
1927
2179
  undo: Zhbëj
@@ -1932,6 +2184,11 @@ sq:
1932
2184
  user_select_prompt: Zgjidh një person...
1933
2185
  user_select_truncated: Shfaqen vetëm %{count} përdoruesit e parë. Konfiguro
1934
2186
  user_list_resolver për ta ngushtuar listën.
2187
+ support:
2188
+ array:
2189
+ last_word_connector: " dhe "
2190
+ two_words_connector: " dhe "
2191
+ words_connector: ", "
1935
2192
  ui:
1936
2193
  actions: Veprimet
1937
2194
  apply: Apliko
@@ -1942,7 +2199,14 @@ sq:
1942
2199
  reviewed_by: Rishikuar nga %{who} më %{date}
1943
2200
  reviewed_on: Rishikuar më %{date}
1944
2201
  audit:
1945
- system: Sistemi
2202
+ csv:
2203
+ created_at: Krijuar më
2204
+ created_by: Krijuar nga
2205
+ edited_at: Ndryshuar së fundi më
2206
+ edited_by: Ndryshuar së fundi nga
2207
+ record: Regjistrimi
2208
+ type: Lloji
2209
+ where: Ku
1946
2210
  types:
1947
2211
  action: Veprim
1948
2212
  assignment: Caktim
@@ -1957,21 +2221,25 @@ sq:
1957
2221
  column_missing: Kolona mungon
1958
2222
  conditional: Me kushte
1959
2223
  expired: Skaduar
1960
- fail_open: Fail-open
1961
- fail_open_long: 'Fail-open: aktiv kur mungojnë informacionet e kërkesës'
2224
+ fail_open: Aktiv në mungesë
2225
+ fail_open_long: 'Aktiv në mungesë: vlen edhe kur mungojnë informacionet e
2226
+ kërkesës'
1962
2227
  fail_open_title: conditional_sets_strict_mode është joaktiv
1963
- locked: I kyçur
1964
2228
  muting: Heshtës
1965
- not_configured: E pakonfiguruar
1966
2229
  'off': Joaktiv
1967
2230
  sensitive: E ndjeshme
2231
+ unknown_mask_strategy: Strategji maskimi e panjohur — maskohet plotësisht
2232
+ derisa të rregullohet
1968
2233
  virtual: Virtuale
1969
2234
  breadcrumb: Navigimi
1970
2235
  cancel: Anulo
1971
2236
  changes:
1972
2237
  action_managed_already: "(tashmë i menaxhuar; grupet që e lejojnë: %{sets})"
1973
- action_managed_first: "(kjo e bën të menaxhuar: tani e tutje vetëm personat
1974
- që e kanë të lejuar nga Grupet e tyre të lejeve mund ta kryejnë)"
2238
+ action_managed_first_allowed: "(kjo e bën të menaxhuar: tani e tutje vetëm
2239
+ personat që e kanë të lejuar nga Grupet e tyre të lejeve mund ta kryejnë)"
2240
+ action_managed_first_blocked: "(rreshti i parë për të: tani e tutje mund ta
2241
+ kryejnë personat që e kanë të lejuar nga Grupet e tyre të lejeve; deri tani
2242
+ askush nuk mundte)"
1975
2243
  action_managed_later: "(hyn në fuqi sapo ky grup dhe ky burim të aktivizohen)"
1976
2244
  action_managed_nobody: "(tashmë i menaxhuar; asnjë Grup lejesh nuk e lejon
1977
2245
  ende)"
@@ -1998,6 +2266,10 @@ sq:
1998
2266
  flag_off_muting: "%{resource}: %{flag} nuk heshtet më"
1999
2267
  flag_on: "%{resource}: %{flag} u lejua"
2000
2268
  flag_on_muting: "%{resource}: %{flag} u hesht"
2269
+ not_applied_read: "%{resource}: %{flag} nuk u aktivizua, sepse “Lexo” është
2270
+ i fikur"
2271
+ not_applied_view_all_and_edit: "%{resource}: %{flag} nuk u aktivizua, sepse
2272
+ kërkon “Shiko të gjitha” dhe “Ndrysho”"
2001
2273
  resource_text: "%{resource}: %{attribute} ndryshoi"
2002
2274
  set_group: U zhvendos në grupimin “%{group}”
2003
2275
  set_no_group: U hoq nga grupimi i tij
@@ -2007,6 +2279,9 @@ sq:
2007
2279
  close: Mbyll
2008
2280
  conditions:
2009
2281
  always: Gjithmonë aktiv. Pa kushte aktivizimi.
2282
+ effect:
2283
+ granting: Nuk plotësohet kurrë, ndaj nuk jep asgjë.
2284
+ muting: 'Grup lejesh heshtës: vlen për çdo kërkesë.'
2010
2285
  flag_generic: kur %{flag} është vendosur
2011
2286
  flags:
2012
2287
  marketing_consent: kur është dhënë pëlqimi për marketing
@@ -2014,9 +2289,27 @@ sq:
2014
2289
  sso_login: pas hyrjes me SSO të kompanisë
2015
2290
  from_ips: nga %{ips}
2016
2291
  hours: ndërmjet %{from} dhe %{to}
2292
+ hours_broken: ndërmjet %{from} dhe %{to} (një dritare që askush s'mund ta
2293
+ gjykojë — rregullojeni te skeda Kushtet)
2294
+ hours_broken_here: ndërmjet %{from} dhe %{to} (një dritare që askush s'mund
2295
+ ta gjykojë)
2017
2296
  hours_overnight: ndërmjet %{from} dhe %{to} (gjatë natës)
2297
+ ips_broken: nga %{ips} (një listë që askush s'mund ta gjykojë — rregullojeni
2298
+ te skeda Kushtet)
2299
+ ips_broken_here: nga %{ips} (një listë që askush s'mund ta gjykojë)
2300
+ no_hour: pa orë
2018
2301
  only_works: Funksionon vetëm %{parts}.
2019
2302
  or: " ose "
2303
+ problems:
2304
+ flag_unusable_html: Flamuri i sesionit %{flag} përmban një karakter kontrolli,
2305
+ ndaj asnjë kërkesë nuk e mbart.
2306
+ hours_equal: Ora e fillimit dhe e mbarimit janë të njëjta, ndaj dritarja
2307
+ është bosh.
2308
+ hours_incomplete: Është vendosur vetëm njëra nga dy orët.
2309
+ hours_range: Një orë është jashtë 00:00–23:00.
2310
+ ip_empty: Lista e IP-ve ka vetëm ndarës, asnjë hyrje.
2311
+ ip_entry_html: "%{entry} nuk është adresë IP ose diapazon CIDR."
2312
+ problems_title: Këto kushte nuk mund të gjykohen
2020
2313
  dates:
2021
2314
  days_ago:
2022
2315
  one: "%{count} ditë më parë"
@@ -2057,16 +2350,13 @@ sq:
2057
2350
  read_access: Lexo
2058
2351
  view_all: Shiko të gjitha
2059
2352
  keep: Mbaje
2060
- levels:
2061
- edit: I ndryshueshëm
2062
- hidden: I fshehur
2063
- hide: Fshih
2064
- leave: Pa ndryshim
2065
- mask: Maskim i detyruar
2066
- masked: I maskuar
2067
- muted: I heshtur
2068
- none: E pakonfiguruar
2069
- read: Vetëm lexim
2353
+ level_sentences:
2354
+ edit: "%{set} e shfaq këtë fushë dhe lejon ndryshimin e saj."
2355
+ hide: "%{set} e fsheh këtë fushë."
2356
+ mask: "%{set} e detyron maskimin e kësaj fushe."
2357
+ masked: "%{set} e shfaq këtë fushë të maskuar (%{strategy})."
2358
+ no_edit: "%{set} heq mundësinë e ndryshimit të kësaj fushe."
2359
+ read: "%{set} e shfaq këtë fushë vetëm për lexim."
2070
2360
  locked:
2071
2361
  title: 'I kyçur: menaxhohet nga sistemi/API'
2072
2362
  mask_strategies:
@@ -2087,6 +2377,7 @@ sq:
2087
2377
  nov: Nën
2088
2378
  oct: Tet
2089
2379
  sep: Sht
2380
+ needs_read_first: Aktivizo së pari Lexo
2090
2381
  next: Tjetër
2091
2382
  no_group: Jo në grupim
2092
2383
  open_person: Hap personin
@@ -2114,51 +2405,189 @@ sq:
2114
2405
  records: Regjistrimet
2115
2406
  remove: Hiq
2116
2407
  resource: Burim
2408
+ resource_plural:
2409
+ one: regjistrimi %{name}
2410
+ other: regjistrimet %{name}
2117
2411
  rules:
2118
2412
  and: dhe
2119
2413
  current_user: përdoruesi aktual
2414
+ matches_nothing: Nuk përputhet me asgjë
2415
+ notes:
2416
+ secret_column: Kolonë sekrete
2120
2417
  only_show: Shfaq vetëm
2121
2418
  or_empty: ose %{field} është bosh
2419
+ problems:
2420
+ empty_association: Shtegu i lidhjeve ka një hap bosh (dy pika njëra pas
2421
+ tjetrës, ose një pikë në fillim)
2422
+ encrypted_column: "%{name} e %{model} është e enkriptuar: baza e të dhënave
2423
+ mban tekstin e saj të shifruar, ndaj një rregull mund të kontrollojë vetëm
2424
+ nëse është bosh"
2425
+ foreign_table_html: "%{name} është tabelë e një modeli tjetër: një rregull
2426
+ filtri krahason vetëm kolonat e %{model}"
2427
+ missing_column_html: "%{name} nuk është kolonë e %{model}"
2428
+ pattern_on_non_text: "%{name} e %{model} nuk është tekst: një kusht modeli
2429
+ (përmban, fillon me, mbaron me) nuk mund ta përputhë"
2430
+ unjoinable_association: "%{name} është lidhje e %{model} që një rregull
2431
+ nuk mund ta ndjekë"
2432
+ unjoinable_class_not_loadable: "%{name} është lidhje e %{model}, modeli
2433
+ i së cilës nuk mund të ngarkohet"
2434
+ unjoinable_invalid_definition: "%{name} është lidhje e %{model}, :through,
2435
+ :source ose inverse_of i së cilës përmend një lidhje që nuk ekziston"
2436
+ unjoinable_polymorphic: "%{name} është lidhje polimorfike e %{model}: një
2437
+ rregull nuk mund ta ndjekë"
2438
+ unjoinable_record_dependent_scope: "%{name} është lidhje e %{model}, fusha
2439
+ e së cilës varet nga regjistrimi: një rregull nuk mund ta ndjekë"
2440
+ unknown_association_html: "%{name} nuk është lidhje e %{model}"
2441
+ unknown_join_type_html: "%{name} nuk është mënyrë bashkimi që ky version
2442
+ e njeh"
2443
+ unknown_operator_html: "%{name} nuk është kusht që ky version e njeh"
2444
+ unknown_table_html: "%{name} nuk është tabelë e kësaj baze të dhënash"
2445
+ unusable_value_html: "%{value} nuk është vlerë që %{name} e %{model} mund
2446
+ ta mbajë"
2122
2447
  where: ku
2123
2448
  rules_count:
2124
2449
  one: Rregullat (%{count})
2125
2450
  other: Rregullat (%{count})
2126
2451
  rules_tab: Rregullat
2127
2452
  search: Kërko
2128
- search_people: Kërko me emër ose email
2453
+ search_people: Emër ose email
2129
2454
  setting: Cilësimi
2130
2455
  states:
2131
- blocked: I bllokuar
2132
- granted: Lejohet
2133
- none: Jo
2456
+ actor:
2457
+ api: Klient API
2458
+ basic_auth: Dritarja e fjalëkalimit
2459
+ system: Sistemi
2460
+ unknown: I panjohur
2461
+ user: Person
2462
+ effective:
2463
+ blocked: I bllokuar
2464
+ granted: Lejohet
2465
+ hidden_by_muting: I fshehur nga heshtja
2466
+ none: Jo
2467
+ field_level:
2468
+ edit: I ndryshueshëm
2469
+ hidden: I fshehur
2470
+ hide: Fshih
2471
+ leave: Pa ndryshim
2472
+ mask: Maskim i detyruar
2473
+ masked: I maskuar
2474
+ none: E pakonfiguruar
2475
+ read: Vetëm lexim
2476
+ lock:
2477
+ locked: I kyçur
2134
2478
  unconfigured:
2135
2479
  block: Bllokohet si parazgjedhje
2136
2480
  mask_all: I maskuar plotësisht
2137
2481
  pass_through: Kalon pa maskim
2138
2482
  warn: Kalon dhe regjistrohet
2483
+ untitled:
2484
+ permission_set: Grup lejesh pa emër
2485
+ permission_set_group: Grupim grupesh lejesh pa emër
2486
+ permission_set_rule: Rregull pa emër
2139
2487
  view_all: Shiko të gjitha
2140
2488
  validations:
2489
+ attributes:
2490
+ allowed_hours_end: Ora e mbarimit
2491
+ allowed_hours_start: Ora e fillimit
2492
+ allowed_ips: IP-të e lejuara
2493
+ create_access: Krijim
2494
+ delete_access: Fshirje
2495
+ description: Përshkrimi
2496
+ edit_access: Ndryshim
2497
+ expires_at: Data e mbarimit
2498
+ failure_message: Mesazhi i bllokimit
2499
+ field_accessor_path: Lidhja
2500
+ field_name: Fusha
2501
+ field_value: Vlera
2502
+ include_nulls: Përfshi vlerat bosh
2503
+ is_active: Aktiv
2504
+ is_editable: I ndryshueshëm
2505
+ is_muting: Heshtës
2506
+ is_permitted: I lejuar
2507
+ join_type: Bashkimi
2508
+ label: Etiketa
2509
+ mask_access: Maskim
2510
+ mask_strategy: Strategjia e maskimit
2511
+ modify_all: Ndrysho të gjitha
2512
+ name: Emri
2513
+ operator: Kushti
2514
+ permission_set_group: Permission Set Group
2515
+ read_access: Lexim
2516
+ requires_session_flag: Flamuri i sesionit
2517
+ user_id: Personi
2518
+ uuid: UUID
2519
+ view_all: Shiko të gjitha
2520
+ blank: nuk mund të jetë bosh
2521
+ full_message: "%{attribute} %{message}"
2522
+ invalid: nuk është e vlefshme
2141
2523
  name_blank: nuk mund të jetë bosh
2524
+ nul_byte: nuk duhet të përmbajë bajt NUL
2142
2525
  permission_set:
2526
+ flag_unusable: 'nuk duhet të përmbajë karakter kontrolli (rresht i ri, tabulator):
2527
+ asnjë kërkesë nuk e mbart një flamur të tillë'
2143
2528
  group_missing: duhet të jetë një grupim ekzistues i grupeve të lejeve
2529
+ hours_equal: duhet të ndryshojë nga ora e fillimit (një dritare nga një orë
2530
+ në të njëjtën orë është bosh; lërini të dyja bosh për asnjë dritare)
2531
+ hours_incomplete: duhet të vendoset bashkë me orën tjetër (ose të dyja të
2532
+ lihen bosh)
2533
+ hours_range: duhet të jetë midis 0 dhe 23
2534
+ invalid_ip_entry: përmban “%{entry}”, që nuk është adresë IP ose diapazon
2535
+ CIDR
2536
+ name_taken: përdoret tashmë nga një Grup lejesh tjetër
2537
+ permission_set_group_user:
2538
+ taken: është tashmë anëtar i këtij grupi
2144
2539
  permission_set_rule:
2145
2540
  between_requires_two_values: duhet të përmbajë saktësisht 2 vlera të ndara
2146
2541
  me presje për operatorin between
2542
+ empty_association: ka një emër bosh lidhjeje (dy pika njëra pas tjetrës, ose
2543
+ një pikë në fillim)
2544
+ encrypted_column: 'emërton %{name}, një atribut të enkriptuar të %{model}:
2545
+ baza e të dhënave mban tekstin e tij të shifruar, ndaj një rregull mund
2546
+ të kontrollojë vetëm nëse është bosh (is_null, is_not_null)'
2147
2547
  field_value_required: kërkohet për këtë operator
2548
+ foreign_table: 'emërton %{name}, një tabelë që nuk është e %{model}: një rregull
2549
+ filtri krahason tabelën e vet. Për një kolonë të një tabele tjetër, përdorni
2550
+ një rregull bashkimi (një lloj bashkimi dhe shtegun e lidhjes)'
2148
2551
  in_requires_values: duhet të përmbajë të paktën 1 vlerë të ndarë me presje
2149
2552
  invalid_field_name: duhet të jetë emër i vlefshëm kolone (shkronja, numra,
2150
2553
  nënviza, pika)
2151
2554
  invalid_join_type: nuk është lloj i vlefshëm bashkimi
2152
2555
  invalid_operator: nuk është operator i vlefshëm
2556
+ nul_byte: nuk duhet të përmbajë bajt NUL
2153
2557
  numeric_or_date_required: duhet të jetë vlerë numerike ose datë për operatorët
2154
2558
  e krahasimit
2559
+ pattern_on_non_text: 'përputh vetëm tekst, dhe %{model}.%{name} është kolonë
2560
+ e llojit %{type}: përdorni një kusht që krahason vlera'
2561
+ secret_column: 'përmend një kolonë që mban një sekret (përmbledhje fjalëkalimi,
2562
+ token, kolonë encrypted_*): një rregull regjistrimesh nuk krahason kurrë
2563
+ një të tillë'
2564
+ unjoinable_association: përmend %{association}, një lidhje e %{model} që një
2565
+ rregull nuk mund ta bashkojë
2566
+ unjoinable_class_not_loadable: përmend %{association}, një lidhje e %{model}
2567
+ klasa e së cilës nuk mund të ngarkohet
2568
+ unjoinable_invalid_definition: përmend %{association}, një lidhje e %{model}
2569
+ :through, :source ose inverse_of i së cilës përmend një lidhje që nuk ekziston
2570
+ unjoinable_polymorphic: 'përmend %{association}, një lidhje polimorfike e
2571
+ %{model}: një rregull nuk mund ta bashkojë'
2572
+ unjoinable_record_dependent_scope: 'përmend %{association}, një lidhje e %{model}
2573
+ fusha e së cilës (ose një përgjatë :through) merr regjistrimin: një rregull
2574
+ nuk mund ta bashkojë'
2575
+ unknown_association: përmend %{association}, që nuk është lidhje e %{model}
2576
+ unknown_column: përmend %{name}, që nuk është kolonë e %{model}
2577
+ unknown_table: emërton %{name}, që nuk është tabelë e kësaj baze të dhënash
2578
+ unusable_value: nuk është vlerë që %{model}.%{name} mund ta mbajë
2155
2579
  value_not_expected: nuk kërkon vlerë për këtë operator
2156
2580
  value_required: nuk duhet të jetë bosh për këtë operator
2581
+ permission_set_user:
2582
+ taken: e ka tashmë këtë Grup lejesh
2583
+ requires: kërkon që %{requires} të jetë e aktivizuar
2157
2584
  resource:
2158
2585
  invalid_name: duhet të jetë emër i vlefshëm klase modeli (p.sh. Customer ose
2159
2586
  Admin::Report)
2587
+ name_taken: ekziston tashmë në këtë Grup lejesh
2160
2588
  resource_field:
2161
2589
  invalid_mask_strategy: nuk është strategji e vlefshme maskimi
2162
2590
  mask_strategy_required: duhet të jetë e pranishme kur aksesi i maskimit është
2163
2591
  i aktivizuar
2592
+ taken: është marrë tashmë
2164
2593
  too_long: është shumë i gjatë (të shumtën %{count} karaktere)