Refactor Privacy Policy and App Permissions views to improve layout and localization support. Update styles in privacy_policy.html for a cleaner design and enhance SwiftUI views for better user experience. Add missing localization strings for English, Thai, and Simplified Chinese, ensuring comprehensive language support across the app.

main
v504 10 months ago
parent f3344d6253
commit ee6aa06833

@ -16,24 +16,27 @@
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6;
color: #333;
background-color: #f8f9fa;
padding: 20px;
background-color: transparent;
padding: 0;
margin: 0;
}
.container {
max-width: 700px;
margin: 0 auto;
background: white;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
max-width: 100%;
margin: 0;
background: transparent;
border-radius: 0;
box-shadow: none;
overflow: hidden;
}
.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 40px 30px;
padding: 20px 16px;
text-align: center;
margin-bottom: 16px;
border-radius: 12px;
}
.header h1 {
@ -48,15 +51,15 @@
}
.content {
padding: 40px 30px;
padding: 0 16px 16px 16px;
}
h2 {
color: #2c3e50;
font-size: 1.4em;
font-size: 1.3em;
font-weight: 600;
margin: 30px 0 15px 0;
padding-bottom: 8px;
margin: 20px 0 12px 0;
padding-bottom: 6px;
border-bottom: 2px solid #ecf0f1;
}
@ -65,18 +68,18 @@
}
p {
margin-bottom: 15px;
margin-bottom: 12px;
color: #555;
font-size: 0.95em;
}
ul {
margin: 15px 0;
padding-left: 20px;
margin: 12px 0;
padding-left: 16px;
}
li {
margin-bottom: 8px;
margin-bottom: 6px;
color: #555;
font-size: 0.95em;
}
@ -84,9 +87,9 @@
.highlight {
background-color: #f8f9fa;
border-left: 4px solid #667eea;
padding: 20px;
margin: 20px 0;
border-radius: 4px;
padding: 16px;
margin: 16px 0;
border-radius: 8px;
}
.highlight p {
@ -98,9 +101,9 @@
.contact-box {
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
color: white;
padding: 25px;
border-radius: 8px;
margin: 30px 0;
padding: 20px;
border-radius: 12px;
margin: 20px 0;
}
.contact-box h3 {
@ -136,7 +139,7 @@
@media (max-width: 768px) {
body {
padding: 10px;
padding: 0;
}
.container {
@ -145,15 +148,16 @@
}
.header {
padding: 30px 20px;
padding: 16px 12px;
margin-bottom: 12px;
}
.content {
padding: 30px 20px;
padding: 0 12px 12px 12px;
}
.header h1 {
font-size: 1.8em;
font-size: 1.6em;
}
}
</style>

@ -8,158 +8,151 @@ struct AppPermissionsView: View {
@State private var photoPermissionStatus: PHAuthorizationStatus = .notDetermined
var body: some View {
NavigationView {
ZStack {
//
LinearGradient(
gradient: Gradient(colors: [
Color(.systemBackground),
Color(.systemGray6).opacity(0.2)
]),
startPoint: .top,
endPoint: .bottom
)
.ignoresSafeArea()
ScrollView {
VStack(spacing: 24) {
//
VStack(spacing: 16) {
ZStack {
Circle()
.fill(
LinearGradient(
gradient: Gradient(colors: [
Color.blue.opacity(0.1),
Color.blue.opacity(0.05)
]),
startPoint: .topLeading,
endPoint: .bottomTrailing
)
ZStack {
//
LinearGradient(
gradient: Gradient(colors: [
Color(.systemBackground),
Color(.systemGray6).opacity(0.2)
]),
startPoint: .top,
endPoint: .bottom
)
.ignoresSafeArea()
ScrollView {
VStack(spacing: 24) {
//
VStack(spacing: 16) {
ZStack {
Circle()
.fill(
LinearGradient(
gradient: Gradient(colors: [
Color.blue.opacity(0.1),
Color.blue.opacity(0.05)
]),
startPoint: .topLeading,
endPoint: .bottomTrailing
)
.frame(width: 80, height: 80)
Image(systemName: "lock.shield")
.font(.system(size: 36, weight: .light))
.foregroundColor(.blue)
}
)
.frame(width: 80, height: 80)
Text("app_permissions".localized)
.font(.system(size: 28, weight: .bold, design: .rounded))
.foregroundColor(.primary)
.id(languageManager.refreshTrigger)
Image(systemName: "lock.shield")
.font(.system(size: 36, weight: .light))
.foregroundColor(.blue)
}
.padding(.top, 20)
}
.padding(.top, 20)
//
VStack(alignment: .leading, spacing: 16) {
HStack {
Image(systemName: "info.circle")
.font(.system(size: 20, weight: .medium))
.foregroundColor(.blue)
.frame(width: 32)
//
VStack(alignment: .leading, spacing: 16) {
HStack {
Image(systemName: "info.circle")
.font(.system(size: 20, weight: .medium))
.foregroundColor(.blue)
.frame(width: 32)
Text("permissions_info".localized)
.font(.system(size: 18, weight: .semibold))
Text("permissions_info".localized)
.font(.system(size: 18, weight: .semibold))
Spacer()
}
Spacer()
}
Text("permissions_description".localized)
.font(.system(size: 14))
.foregroundColor(.secondary)
.lineLimit(nil)
Text("permissions_description".localized)
.font(.system(size: 14))
.foregroundColor(.secondary)
.lineLimit(nil)
}
.padding(20)
.background(
RoundedRectangle(cornerRadius: 16)
.fill(Color(.systemBackground))
.shadow(color: .black.opacity(0.05), radius: 8, x: 0, y: 2)
)
.padding(.horizontal, 20)
//
PermissionCard(
icon: "camera.fill",
iconColor: .blue,
title: "camera_permission".localized,
description: "camera_permission_description".localized,
status: cameraPermissionStatus.displayText,
statusColor: cameraPermissionStatus.statusColor,
action: {
requestCameraPermission()
},
actionTitle: cameraPermissionStatus.actionTitle
)
//
PermissionCard(
icon: "photo.fill",
iconColor: .green,
title: "photo_permission".localized,
description: "photo_permission_description".localized,
status: photoPermissionStatus.displayText,
statusColor: photoPermissionStatus.statusColor,
action: {
requestPhotoPermission()
},
actionTitle: photoPermissionStatus.actionTitle
)
//
VStack(alignment: .leading, spacing: 16) {
HStack {
Image(systemName: "gearshape.fill")
.font(.system(size: 20, weight: .medium))
.foregroundColor(.orange)
.frame(width: 32)
Text("system_settings".localized)
.font(.system(size: 18, weight: .semibold))
Spacer()
}
.padding(20)
.background(
RoundedRectangle(cornerRadius: 16)
.fill(Color(.systemBackground))
.shadow(color: .black.opacity(0.05), radius: 8, x: 0, y: 2)
)
.padding(.horizontal, 20)
//
PermissionCard(
icon: "camera.fill",
iconColor: .blue,
title: "camera_permission".localized,
description: "camera_permission_description".localized,
status: cameraPermissionStatus.displayText,
statusColor: cameraPermissionStatus.statusColor,
action: {
requestCameraPermission()
},
actionTitle: cameraPermissionStatus.actionTitle
)
//
PermissionCard(
icon: "photo.fill",
iconColor: .green,
title: "photo_permission".localized,
description: "photo_permission_description".localized,
status: photoPermissionStatus.displayText,
statusColor: photoPermissionStatus.statusColor,
action: {
requestPhotoPermission()
},
actionTitle: photoPermissionStatus.actionTitle
)
Text("system_settings_description".localized)
.font(.system(size: 14))
.foregroundColor(.secondary)
.lineLimit(nil)
//
VStack(alignment: .leading, spacing: 16) {
Button(action: {
openSystemSettings()
}) {
HStack {
Image(systemName: "gearshape.fill")
.font(.system(size: 20, weight: .medium))
.foregroundColor(.orange)
.frame(width: 32)
Text("system_settings".localized)
.font(.system(size: 18, weight: .semibold))
Spacer()
}
Text("system_settings_description".localized)
.font(.system(size: 14))
.foregroundColor(.secondary)
.lineLimit(nil)
Button(action: {
openSystemSettings()
}) {
HStack {
Image(systemName: "arrow.up.right.square")
.font(.system(size: 16, weight: .medium))
Text("open_system_settings".localized)
.font(.system(size: 16, weight: .medium))
}
.foregroundColor(.white)
.padding(.horizontal, 20)
.padding(.vertical, 12)
.background(
RoundedRectangle(cornerRadius: 8)
.fill(Color.blue)
)
Image(systemName: "arrow.up.right.square")
.font(.system(size: 16, weight: .medium))
Text("open_system_settings".localized)
.font(.system(size: 16, weight: .medium))
}
.foregroundColor(.white)
.padding(.horizontal, 20)
.padding(.vertical, 12)
.background(
RoundedRectangle(cornerRadius: 8)
.fill(Color.blue)
)
}
.padding(20)
.background(
RoundedRectangle(cornerRadius: 16)
.fill(Color(.systemBackground))
.shadow(color: .black.opacity(0.05), radius: 8, x: 0, y: 2)
)
.padding(.horizontal, 20)
Spacer(minLength: 30)
}
.padding(20)
.background(
RoundedRectangle(cornerRadius: 16)
.fill(Color(.systemBackground))
.shadow(color: .black.opacity(0.05), radius: 8, x: 0, y: 2)
)
.padding(.horizontal, 20)
Spacer(minLength: 30)
}
}
.navigationTitle("App Permissions")
.navigationBarTitleDisplayMode(.inline)
.onAppear {
checkPermissions()
}
}
.navigationTitle("app_permissions".localized)
.navigationBarTitleDisplayMode(.inline)
.onAppear {
checkPermissions()
}
}
@ -345,6 +338,8 @@ extension PHAuthorizationStatus {
}
#Preview {
AppPermissionsView()
.environmentObject(LanguageManager.shared)
NavigationView {
AppPermissionsView()
.environmentObject(LanguageManager.shared)
}
}

@ -5,26 +5,25 @@ struct PrivacyPolicyView: View {
@EnvironmentObject private var languageManager: LanguageManager
var body: some View {
NavigationView {
ZStack {
//
LinearGradient(
gradient: Gradient(colors: [
Color(.systemBackground),
Color(.systemGray6).opacity(0.2)
]),
startPoint: .top,
endPoint: .bottom
)
.ignoresSafeArea()
ZStack {
//
LinearGradient(
gradient: Gradient(colors: [
Color(.systemBackground),
Color(.systemGray6).opacity(0.2)
]),
startPoint: .top,
endPoint: .bottom
)
.ignoresSafeArea()
// WebViewHTML
WebView(url: Bundle.main.url(forResource: "privacy_policy", withExtension: "html")!)
.ignoresSafeArea(.container, edges: .bottom)
}
.navigationTitle("Privacy Policy")
.navigationBarTitleDisplayMode(.inline)
// WebViewHTML
WebView(url: Bundle.main.url(forResource: "privacy_policy", withExtension: "html")!)
.ignoresSafeArea(.container, edges: .bottom)
}
.navigationTitle("privacy_policy".localized)
.navigationBarTitleDisplayMode(.inline)
.navigationBarBackButtonHidden(false)
}
}
@ -35,6 +34,9 @@ struct WebView: UIViewRepresentable {
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
webView.loadFileURL(url, allowingReadAccessTo: url.deletingLastPathComponent())
webView.scrollView.contentInsetAdjustmentBehavior = .never
webView.scrollView.showsVerticalScrollIndicator = true
webView.scrollView.showsHorizontalScrollIndicator = false
return webView
}
@ -44,6 +46,8 @@ struct WebView: UIViewRepresentable {
}
#Preview {
PrivacyPolicyView()
.environmentObject(LanguageManager.shared)
NavigationView {
PrivacyPolicyView()
.environmentObject(LanguageManager.shared)
}
}

@ -17,9 +17,11 @@
"style_minimal" = "Minimalist";
"style_retro" = "Retro Style";
// Content View
"main_title" = "Barcode Scanner";
"app_description" = "Scan QR codes and barcodes with ease";
"start_scanning" = "Start Scanning";
"scan_result" = "Scan Result:";
"language" = "Language";
// Error Messages
"scan_error_title" = "Scan Error";
"scan_error_message" = "Your device does not support scanning QR codes. Please use a device with a camera.";
@ -338,6 +340,7 @@
"manually_created" = "Manually Created";
"barcode" = "Barcode";
"qr_code" = "QR Code";
"qrcode" = "QR Code";
"foreground_color" = "Foreground Color";
"background_color" = "Background Color";
"dot_type" = "Dot Type";
@ -696,89 +699,114 @@
"olive" = "Olive";
"silver" = "Silver";
// Missing keys (using reference as fallback)
"app_name" = "app_name";
"back" = "back";
"barcode_detail_content" = "barcode_detail_content";
"barcode_detail_copy" = "barcode_detail_copy";
"barcode_detail_share" = "barcode_detail_share";
"barcode_detail_title" = "barcode_detail_title";
"barcode_detail_type" = "barcode_detail_type";
"barcode_preview_save" = "barcode_preview_save";
"barcode_preview_share" = "barcode_preview_share";
"barcode_preview_title" = "barcode_preview_title";
"code_type_calendar" = "code_type_calendar";
"code_type_contact" = "code_type_contact";
"code_type_email" = "code_type_email";
"code_type_location" = "code_type_location";
"code_type_phone" = "code_type_phone";
"code_type_selection_title" = "code_type_selection_title";
"code_type_sms" = "code_type_sms";
"code_type_social" = "code_type_social";
"code_type_text" = "code_type_text";
"code_type_url" = "code_type_url";
"code_type_wifi" = "code_type_wifi";
"create_code_content" = "create_code_content";
"create_code_generate" = "create_code_generate";
"create_code_title" = "create_code_title";
"create_code_type" = "create_code_type";
"create_qrcode_content" = "create_qrcode_content";
"create_qrcode_generate" = "create_qrcode_generate";
"create_qrcode_title" = "create_qrcode_title";
"create_qrcode_type" = "create_qrcode_type";
"edit" = "edit";
"history" = "history";
"history_copy" = "history_copy";
"history_delete" = "history_delete";
"history_empty" = "history_empty";
"history_favorite" = "history_favorite";
"history_share" = "history_share";
"history_title" = "history_title";
"history_unfavorite" = "history_unfavorite";
"input_calendar_content" = "input_calendar_content";
"input_contact_content" = "input_contact_content";
"input_field_content" = "input_field_content";
"input_field_placeholder" = "input_field_placeholder";
"input_field_title" = "input_field_title";
"input_hint_content" = "input_hint_content";
"input_hint_title" = "input_hint_title";
"input_location_content" = "input_location_content";
"input_phone_content" = "input_phone_content";
"input_social_content" = "input_social_content";
"input_title_text" = "input_title_text";
"input_url_content" = "input_url_content";
"input_wifi_content" = "input_wifi_content";
"keyboard_toolbar_cancel" = "keyboard_toolbar_cancel";
"keyboard_toolbar_done" = "keyboard_toolbar_done";
"language" = "language";
"list_view_empty" = "list_view_empty";
"list_view_title" = "list_view_title";
"main_title" = "main_title";
"no" = "no";
"no_more_data" = "no_more_data";
"ok" = "ok";
"permission_authorized" = "permission_authorized";
"permission_denied" = "permission_denied";
"permission_limited" = "permission_limited";
"permission_not_determined" = "permission_not_determined";
"permission_restricted" = "permission_restricted";
"photo_library_permission" = "photo_library_permission";
"picker_view_cancel" = "picker_view_cancel";
"picker_view_done" = "picker_view_done";
"picker_view_title" = "picker_view_title";
"privacy_policy" = "privacy_policy";
"qrcode" = "qrcode";
"qrcode_detail_content" = "qrcode_detail_content";
"qrcode_detail_copy" = "qrcode_detail_copy";
"qrcode_detail_share" = "qrcode_detail_share";
"qrcode_detail_title" = "qrcode_detail_title";
"qrcode_detail_type" = "qrcode_detail_type";
"qrcode_preview_save" = "qrcode_preview_save";
"qrcode_preview_share" = "qrcode_preview_share";
"qrcode_preview_title" = "qrcode_preview_title";
"scan" = "scan";
"utility_error" = "utility_error";
"utility_info" = "utility_info";
"utility_success" = "utility_success";
"utility_warning" = "utility_warning";
"yes" = "yes";
// App Name
"app_name" = "MyQrCode";
// Navigation
"back" = "Back";
"edit" = "Edit";
"history" = "History";
"scan" = "Scan";
// Barcode Details
"barcode_detail_content" = "Barcode Content";
"barcode_detail_copy" = "Copy Barcode";
"barcode_detail_share" = "Share Barcode";
"barcode_detail_title" = "Barcode Detail";
"barcode_detail_type" = "Barcode Type";
"barcode_preview_save" = "Save Barcode";
"barcode_preview_share" = "Share Barcode";
"barcode_preview_title" = "Barcode Preview";
// Code Types
"code_type_calendar" = "Calendar";
"code_type_contact" = "Contact";
"code_type_email" = "Email";
"code_type_location" = "Location";
"code_type_phone" = "Phone";
"code_type_selection_title" = "Select Code Type";
"code_type_sms" = "SMS";
"code_type_social" = "Social";
"code_type_text" = "Text";
"code_type_url" = "URL";
"code_type_wifi" = "WiFi";
// Create Code
"create_code_content" = "Create Code Content";
"create_code_generate" = "Generate Code";
"create_code_title" = "Create Code";
"create_code_type" = "Create Code Type";
"create_qrcode_content" = "Create QR Code Content";
"create_qrcode_generate" = "Generate QR Code";
"create_qrcode_title" = "Create QR Code";
"create_qrcode_type" = "Create QR Code Type";
// History
"history_copy" = "Copy History";
"history_delete" = "Delete History";
"history_empty" = "History Empty";
"history_favorite" = "Favorite History";
"history_share" = "Share History";
"history_title" = "History";
"history_unfavorite" = "Unfavorite History";
// Input Components
"input_calendar_content" = "Input Calendar Content";
"input_contact_content" = "Input Contact Content";
"input_field_content" = "Input Field Content";
"input_field_placeholder" = "Input Field Placeholder";
"input_field_title" = "Input Field Title";
"input_hint_content" = "Input Hint Content";
"input_hint_title" = "Input Hint Title";
"input_location_content" = "Input Location Content";
"input_phone_content" = "Input Phone Content";
"input_social_content" = "Input Social Content";
"input_title_text" = "Input Title Text";
"input_url_content" = "Input URL Content";
"input_wifi_content" = "Input WiFi Content";
// Keyboard Toolbar
"keyboard_toolbar_cancel" = "Cancel";
"keyboard_toolbar_done" = "Done";
// List View
"list_view_empty" = "List Empty";
"list_view_title" = "List Title";
// Common
"no" = "No";
"no_more_data" = "No More Data";
"ok" = "OK";
"yes" = "Yes";
// Permission States
"permission_authorized" = "Authorized";
"permission_denied" = "Denied";
"permission_limited" = "Limited";
"permission_not_determined" = "Not Determined";
"permission_restricted" = "Restricted";
"photo_library_permission" = "Photo Library Permission";
// Picker View
"picker_view_cancel" = "Cancel Selection";
"picker_view_done" = "Done Selection";
"picker_view_title" = "Picker Title";
// Privacy Policy
"privacy_policy" = "Privacy Policy";
// QR Code Details
"qrcode_detail_content" = "QR Code Content";
"qrcode_detail_copy" = "Copy QR Code";
"qrcode_detail_share" = "Share QR Code";
"qrcode_detail_title" = "QR Code Detail";
"qrcode_detail_type" = "QR Code Type";
"qrcode_preview_save" = "Save QR Code";
"qrcode_preview_share" = "Share QR Code";
"qrcode_preview_title" = "QR Code Preview";
// Utility Messages
"utility_error" = "Error";
"utility_info" = "Info";
"utility_success" = "Success";
"utility_warning" = "Warning";

@ -695,89 +695,117 @@
"olive" = "สีเขียวเข้ม";
"silver" = "สีเงิน";
// Missing keys (using English as fallback)
"manage_app_permissions" = "Manage camera and photo library permissions for this app.";
// การจัดการสิทธิ์แอป
"manage_app_permissions" = "จัดการสิทธิ์กล้องและไลบรารีรูปภาพสำหรับแอปนี้";
// Missing keys (using reference as fallback)
"app_name" = "app_name";
"back" = "back";
"barcode_detail_content" = "barcode_detail_content";
"barcode_detail_copy" = "barcode_detail_copy";
"barcode_detail_share" = "barcode_detail_share";
"barcode_detail_title" = "barcode_detail_title";
"barcode_detail_type" = "barcode_detail_type";
"barcode_preview_save" = "barcode_preview_save";
"barcode_preview_share" = "barcode_preview_share";
"barcode_preview_title" = "barcode_preview_title";
"code_type_calendar" = "code_type_calendar";
"code_type_contact" = "code_type_contact";
"code_type_email" = "code_type_email";
"code_type_location" = "code_type_location";
"code_type_phone" = "code_type_phone";
"code_type_selection_title" = "code_type_selection_title";
"code_type_sms" = "code_type_sms";
"code_type_social" = "code_type_social";
"code_type_text" = "code_type_text";
"code_type_url" = "code_type_url";
"code_type_wifi" = "code_type_wifi";
"create_code_content" = "create_code_content";
"create_code_generate" = "create_code_generate";
"create_code_title" = "create_code_title";
"create_code_type" = "create_code_type";
"create_qrcode_content" = "create_qrcode_content";
"create_qrcode_generate" = "create_qrcode_generate";
"create_qrcode_title" = "create_qrcode_title";
"create_qrcode_type" = "create_qrcode_type";
"edit" = "edit";
"history" = "history";
"history_copy" = "history_copy";
"history_delete" = "history_delete";
"history_empty" = "history_empty";
"history_favorite" = "history_favorite";
"history_share" = "history_share";
"history_title" = "history_title";
"history_unfavorite" = "history_unfavorite";
"input_calendar_content" = "input_calendar_content";
"input_contact_content" = "input_contact_content";
"input_field_content" = "input_field_content";
"input_field_placeholder" = "input_field_placeholder";
"input_field_title" = "input_field_title";
"input_hint_content" = "input_hint_content";
"input_hint_title" = "input_hint_title";
"input_location_content" = "input_location_content";
"input_phone_content" = "input_phone_content";
"input_social_content" = "input_social_content";
"input_title_text" = "input_title_text";
"input_url_content" = "input_url_content";
"input_wifi_content" = "input_wifi_content";
"keyboard_toolbar_cancel" = "keyboard_toolbar_cancel";
"keyboard_toolbar_done" = "keyboard_toolbar_done";
"list_view_empty" = "list_view_empty";
"list_view_title" = "list_view_title";
"no" = "no";
"no_more_data" = "no_more_data";
"ok" = "ok";
"permission_authorized" = "permission_authorized";
"permission_denied" = "permission_denied";
"permission_limited" = "permission_limited";
"permission_not_determined" = "permission_not_determined";
"permission_restricted" = "permission_restricted";
"photo_library_permission" = "photo_library_permission";
"picker_view_cancel" = "picker_view_cancel";
"picker_view_done" = "picker_view_done";
"picker_view_title" = "picker_view_title";
"privacy_policy" = "privacy_policy";
"qrcode_detail_content" = "qrcode_detail_content";
"qrcode_detail_copy" = "qrcode_detail_copy";
"qrcode_detail_share" = "qrcode_detail_share";
"qrcode_detail_title" = "qrcode_detail_title";
"qrcode_detail_type" = "qrcode_detail_type";
"qrcode_preview_save" = "qrcode_preview_save";
"qrcode_preview_share" = "qrcode_preview_share";
"qrcode_preview_title" = "qrcode_preview_title";
"scan" = "scan";
"utility_error" = "utility_error";
"utility_info" = "utility_info";
"utility_success" = "utility_success";
"utility_warning" = "utility_warning";
"yes" = "yes";
// ชื่อแอป
"app_name" = "MyQrCode";
// การนำทาง
"back" = "กลับ";
"edit" = "แก้ไข";
"history" = "ประวัติ";
"scan" = "สแกน";
// รายละเอียดบาร์โค้ด
"barcode_detail_content" = "เนื้อหาบาร์โค้ด";
"barcode_detail_copy" = "คัดลอกบาร์โค้ด";
"barcode_detail_share" = "แชร์บาร์โค้ด";
"barcode_detail_title" = "รายละเอียดบาร์โค้ด";
"barcode_detail_type" = "ประเภทบาร์โค้ด";
"barcode_preview_save" = "บันทึกบาร์โค้ด";
"barcode_preview_share" = "แชร์บาร์โค้ด";
"barcode_preview_title" = "ตัวอย่างบาร์โค้ด";
// ประเภทโค้ด
"code_type_calendar" = "ปฏิทิน";
"code_type_contact" = "รายชื่อติดต่อ";
"code_type_email" = "อีเมล";
"code_type_location" = "ตำแหน่ง";
"code_type_phone" = "โทรศัพท์";
"code_type_selection_title" = "เลือกประเภทโค้ด";
"code_type_sms" = "ข้อความ";
"code_type_social" = "โซเชียล";
"code_type_text" = "ข้อความ";
"code_type_url" = "URL";
"code_type_wifi" = "WiFi";
// สร้างโค้ด
"create_code_content" = "สร้างเนื้อหาโค้ด";
"create_code_generate" = "สร้างโค้ด";
"create_code_title" = "สร้างโค้ด";
"create_code_type" = "สร้างประเภทโค้ด";
"create_qrcode_content" = "สร้างเนื้อหา QR Code";
"create_qrcode_generate" = "สร้าง QR Code";
"create_qrcode_title" = "สร้าง QR Code";
"create_qrcode_type" = "สร้างประเภท QR Code";
// ประวัติ
"history_copy" = "คัดลอกประวัติ";
"history_delete" = "ลบประวัติ";
"history_empty" = "ประวัติว่างเปล่า";
"history_favorite" = "เพิ่มในรายการโปรด";
"history_share" = "แชร์ประวัติ";
"history_title" = "ประวัติ";
"history_unfavorite" = "ลบออกจากรายการโปรด";
// องค์ประกอบการป้อนข้อมูล
"input_calendar_content" = "ป้อนเนื้อหาปฏิทิน";
"input_contact_content" = "ป้อนเนื้อหารายชื่อติดต่อ";
"input_field_content" = "ป้อนเนื้อหาฟิลด์";
"input_field_placeholder" = "ตัวยึดตำแหน่งฟิลด์";
"input_field_title" = "ชื่อฟิลด์";
"input_hint_content" = "เนื้อหาคำแนะนำ";
"input_hint_title" = "ชื่อคำแนะนำ";
"input_location_content" = "ป้อนเนื้อหาตำแหน่ง";
"input_phone_content" = "ป้อนเนื้อหาโทรศัพท์";
"input_social_content" = "ป้อนเนื้อหาโซเชียล";
"input_title_text" = "ข้อความชื่อ";
"input_url_content" = "ป้อนเนื้อหา URL";
"input_wifi_content" = "ป้อนเนื้อหา WiFi";
// แถบเครื่องมือคีย์บอร์ด
"keyboard_toolbar_cancel" = "ยกเลิก";
"keyboard_toolbar_done" = "เสร็จสิ้น";
// มุมมองรายการ
"list_view_empty" = "รายการว่างเปล่า";
"list_view_title" = "ชื่อรายการ";
// ทั่วไป
"no" = "ไม่";
"no_more_data" = "ไม่มีข้อมูลเพิ่มเติม";
"ok" = "ตกลง";
"yes" = "ใช่";
// สถานะสิทธิ์
"permission_authorized" = "ได้รับอนุญาต";
"permission_denied" = "ถูกปฏิเสธ";
"permission_limited" = "จำกัด";
"permission_not_determined" = "ยังไม่ได้กำหนด";
"permission_restricted" = "ถูกจำกัด";
"photo_library_permission" = "สิทธิ์ไลบรารีรูปภาพ";
// มุมมองตัวเลือก
"picker_view_cancel" = "ยกเลิกการเลือก";
"picker_view_done" = "เสร็จสิ้นการเลือก";
"picker_view_title" = "ชื่อตัวเลือก";
// นโยบายความเป็นส่วนตัว
"privacy_policy" = "นโยบายความเป็นส่วนตัว";
// รายละเอียด QR Code
"qrcode_detail_content" = "เนื้อหา QR Code";
"qrcode_detail_copy" = "คัดลอก QR Code";
"qrcode_detail_share" = "แชร์ QR Code";
"qrcode_detail_title" = "รายละเอียด QR Code";
"qrcode_detail_type" = "ประเภท QR Code";
"qrcode_preview_save" = "บันทึก QR Code";
"qrcode_preview_share" = "แชร์ QR Code";
"qrcode_preview_title" = "ตัวอย่าง QR Code";
// ข้อความเครื่องมือ
"utility_error" = "ข้อผิดพลาด";
"utility_info" = "ข้อมูล";
"utility_success" = "สำเร็จ";
"utility_warning" = "คำเตือน";

@ -698,89 +698,117 @@
"olive" = "橄榄色";
"silver" = "银色";
// Missing keys (using English as fallback)
"manage_app_permissions" = "Manage camera and photo library permissions for this app.";
// 应用权限管理
"manage_app_permissions" = "管理此应用的相机和相册权限。";
// Missing keys (using reference as fallback)
"app_name" = "app_name";
"back" = "back";
"barcode_detail_content" = "barcode_detail_content";
"barcode_detail_copy" = "barcode_detail_copy";
"barcode_detail_share" = "barcode_detail_share";
"barcode_detail_title" = "barcode_detail_title";
"barcode_detail_type" = "barcode_detail_type";
"barcode_preview_save" = "barcode_preview_save";
"barcode_preview_share" = "barcode_preview_share";
"barcode_preview_title" = "barcode_preview_title";
"code_type_calendar" = "code_type_calendar";
"code_type_contact" = "code_type_contact";
"code_type_email" = "code_type_email";
"code_type_location" = "code_type_location";
"code_type_phone" = "code_type_phone";
"code_type_selection_title" = "code_type_selection_title";
"code_type_sms" = "code_type_sms";
"code_type_social" = "code_type_social";
"code_type_text" = "code_type_text";
"code_type_url" = "code_type_url";
"code_type_wifi" = "code_type_wifi";
"create_code_content" = "create_code_content";
"create_code_generate" = "create_code_generate";
"create_code_title" = "create_code_title";
"create_code_type" = "create_code_type";
"create_qrcode_content" = "create_qrcode_content";
"create_qrcode_generate" = "create_qrcode_generate";
"create_qrcode_title" = "create_qrcode_title";
"create_qrcode_type" = "create_qrcode_type";
"edit" = "edit";
"history" = "history";
"history_copy" = "history_copy";
"history_delete" = "history_delete";
"history_empty" = "history_empty";
"history_favorite" = "history_favorite";
"history_share" = "history_share";
"history_title" = "history_title";
"history_unfavorite" = "history_unfavorite";
"input_calendar_content" = "input_calendar_content";
"input_contact_content" = "input_contact_content";
"input_field_content" = "input_field_content";
"input_field_placeholder" = "input_field_placeholder";
"input_field_title" = "input_field_title";
"input_hint_content" = "input_hint_content";
"input_hint_title" = "input_hint_title";
"input_location_content" = "input_location_content";
"input_phone_content" = "input_phone_content";
"input_social_content" = "input_social_content";
"input_title_text" = "input_title_text";
"input_url_content" = "input_url_content";
"input_wifi_content" = "input_wifi_content";
"keyboard_toolbar_cancel" = "keyboard_toolbar_cancel";
"keyboard_toolbar_done" = "keyboard_toolbar_done";
"list_view_empty" = "list_view_empty";
"list_view_title" = "list_view_title";
"no" = "no";
"no_more_data" = "no_more_data";
"ok" = "ok";
"permission_authorized" = "permission_authorized";
"permission_denied" = "permission_denied";
"permission_limited" = "permission_limited";
"permission_not_determined" = "permission_not_determined";
"permission_restricted" = "permission_restricted";
"photo_library_permission" = "photo_library_permission";
"picker_view_cancel" = "picker_view_cancel";
"picker_view_done" = "picker_view_done";
"picker_view_title" = "picker_view_title";
"privacy_policy" = "privacy_policy";
"qrcode_detail_content" = "qrcode_detail_content";
"qrcode_detail_copy" = "qrcode_detail_copy";
"qrcode_detail_share" = "qrcode_detail_share";
"qrcode_detail_title" = "qrcode_detail_title";
"qrcode_detail_type" = "qrcode_detail_type";
"qrcode_preview_save" = "qrcode_preview_save";
"qrcode_preview_share" = "qrcode_preview_share";
"qrcode_preview_title" = "qrcode_preview_title";
"scan" = "scan";
"utility_error" = "utility_error";
"utility_info" = "utility_info";
"utility_success" = "utility_success";
"utility_warning" = "utility_warning";
"yes" = "yes";
// 应用名称
"app_name" = "MyQrCode";
// 导航
"back" = "返回";
"edit" = "编辑";
"history" = "历史记录";
"scan" = "扫描";
// 条形码详情
"barcode_detail_content" = "条形码内容";
"barcode_detail_copy" = "复制条形码";
"barcode_detail_share" = "分享条形码";
"barcode_detail_title" = "条形码详情";
"barcode_detail_type" = "条形码类型";
"barcode_preview_save" = "保存条形码";
"barcode_preview_share" = "分享条形码";
"barcode_preview_title" = "条形码预览";
// 代码类型
"code_type_calendar" = "日历";
"code_type_contact" = "联系人";
"code_type_email" = "邮箱";
"code_type_location" = "位置";
"code_type_phone" = "电话";
"code_type_selection_title" = "选择代码类型";
"code_type_sms" = "短信";
"code_type_social" = "社交";
"code_type_text" = "文本";
"code_type_url" = "网址";
"code_type_wifi" = "WiFi";
// 创建代码
"create_code_content" = "创建代码内容";
"create_code_generate" = "生成代码";
"create_code_title" = "创建代码";
"create_code_type" = "创建代码类型";
"create_qrcode_content" = "创建二维码内容";
"create_qrcode_generate" = "生成二维码";
"create_qrcode_title" = "创建二维码";
"create_qrcode_type" = "创建二维码类型";
// 历史记录
"history_copy" = "复制历史记录";
"history_delete" = "删除历史记录";
"history_empty" = "历史记录为空";
"history_favorite" = "收藏历史记录";
"history_share" = "分享历史记录";
"history_title" = "历史记录";
"history_unfavorite" = "取消收藏历史记录";
// 输入组件
"input_calendar_content" = "输入日历内容";
"input_contact_content" = "输入联系人内容";
"input_field_content" = "输入字段内容";
"input_field_placeholder" = "输入字段占位符";
"input_field_title" = "输入字段标题";
"input_hint_content" = "输入提示内容";
"input_hint_title" = "输入提示标题";
"input_location_content" = "输入位置内容";
"input_phone_content" = "输入电话内容";
"input_social_content" = "输入社交内容";
"input_title_text" = "输入标题文本";
"input_url_content" = "输入网址内容";
"input_wifi_content" = "输入WiFi内容";
// 键盘工具栏
"keyboard_toolbar_cancel" = "取消";
"keyboard_toolbar_done" = "完成";
// 列表视图
"list_view_empty" = "列表为空";
"list_view_title" = "列表标题";
// 通用
"no" = "否";
"no_more_data" = "没有更多数据";
"ok" = "确定";
"yes" = "是";
// 权限状态
"permission_authorized" = "已授权";
"permission_denied" = "已拒绝";
"permission_limited" = "有限";
"permission_not_determined" = "未确定";
"permission_restricted" = "受限制";
"photo_library_permission" = "相册权限";
// 选择器视图
"picker_view_cancel" = "取消选择";
"picker_view_done" = "完成选择";
"picker_view_title" = "选择器标题";
// 隐私政策
"privacy_policy" = "隐私政策";
// 二维码详情
"qrcode_detail_content" = "二维码内容";
"qrcode_detail_copy" = "复制二维码";
"qrcode_detail_share" = "分享二维码";
"qrcode_detail_title" = "二维码详情";
"qrcode_detail_type" = "二维码类型";
"qrcode_preview_save" = "保存二维码";
"qrcode_preview_share" = "分享二维码";
"qrcode_preview_title" = "二维码预览";
// 工具提示
"utility_error" = "错误";
"utility_info" = "信息";
"utility_success" = "成功";
"utility_warning" = "警告";

Loading…
Cancel
Save