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 2 months ago
parent f3344d6253
commit ee6aa06833

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

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

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

@ -17,9 +17,11 @@
"style_minimal" = "Minimalist"; "style_minimal" = "Minimalist";
"style_retro" = "Retro Style"; "style_retro" = "Retro Style";
// Content View // Content View
"main_title" = "Barcode Scanner";
"app_description" = "Scan QR codes and barcodes with ease"; "app_description" = "Scan QR codes and barcodes with ease";
"start_scanning" = "Start Scanning"; "start_scanning" = "Start Scanning";
"scan_result" = "Scan Result:"; "scan_result" = "Scan Result:";
"language" = "Language";
// Error Messages // Error Messages
"scan_error_title" = "Scan Error"; "scan_error_title" = "Scan Error";
"scan_error_message" = "Your device does not support scanning QR codes. Please use a device with a camera."; "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"; "manually_created" = "Manually Created";
"barcode" = "Barcode"; "barcode" = "Barcode";
"qr_code" = "QR Code"; "qr_code" = "QR Code";
"qrcode" = "QR Code";
"foreground_color" = "Foreground Color"; "foreground_color" = "Foreground Color";
"background_color" = "Background Color"; "background_color" = "Background Color";
"dot_type" = "Dot Type"; "dot_type" = "Dot Type";
@ -696,89 +699,114 @@
"olive" = "Olive"; "olive" = "Olive";
"silver" = "Silver"; "silver" = "Silver";
// Missing keys (using reference as fallback) // App Name
"app_name" = "app_name"; "app_name" = "MyQrCode";
"back" = "back";
"barcode_detail_content" = "barcode_detail_content"; // Navigation
"barcode_detail_copy" = "barcode_detail_copy"; "back" = "Back";
"barcode_detail_share" = "barcode_detail_share"; "edit" = "Edit";
"barcode_detail_title" = "barcode_detail_title"; "history" = "History";
"barcode_detail_type" = "barcode_detail_type"; "scan" = "Scan";
"barcode_preview_save" = "barcode_preview_save";
"barcode_preview_share" = "barcode_preview_share"; // Barcode Details
"barcode_preview_title" = "barcode_preview_title"; "barcode_detail_content" = "Barcode Content";
"code_type_calendar" = "code_type_calendar"; "barcode_detail_copy" = "Copy Barcode";
"code_type_contact" = "code_type_contact"; "barcode_detail_share" = "Share Barcode";
"code_type_email" = "code_type_email"; "barcode_detail_title" = "Barcode Detail";
"code_type_location" = "code_type_location"; "barcode_detail_type" = "Barcode Type";
"code_type_phone" = "code_type_phone"; "barcode_preview_save" = "Save Barcode";
"code_type_selection_title" = "code_type_selection_title"; "barcode_preview_share" = "Share Barcode";
"code_type_sms" = "code_type_sms"; "barcode_preview_title" = "Barcode Preview";
"code_type_social" = "code_type_social";
"code_type_text" = "code_type_text"; // Code Types
"code_type_url" = "code_type_url"; "code_type_calendar" = "Calendar";
"code_type_wifi" = "code_type_wifi"; "code_type_contact" = "Contact";
"create_code_content" = "create_code_content"; "code_type_email" = "Email";
"create_code_generate" = "create_code_generate"; "code_type_location" = "Location";
"create_code_title" = "create_code_title"; "code_type_phone" = "Phone";
"create_code_type" = "create_code_type"; "code_type_selection_title" = "Select Code Type";
"create_qrcode_content" = "create_qrcode_content"; "code_type_sms" = "SMS";
"create_qrcode_generate" = "create_qrcode_generate"; "code_type_social" = "Social";
"create_qrcode_title" = "create_qrcode_title"; "code_type_text" = "Text";
"create_qrcode_type" = "create_qrcode_type"; "code_type_url" = "URL";
"edit" = "edit"; "code_type_wifi" = "WiFi";
"history" = "history";
"history_copy" = "history_copy"; // Create Code
"history_delete" = "history_delete"; "create_code_content" = "Create Code Content";
"history_empty" = "history_empty"; "create_code_generate" = "Generate Code";
"history_favorite" = "history_favorite"; "create_code_title" = "Create Code";
"history_share" = "history_share"; "create_code_type" = "Create Code Type";
"history_title" = "history_title"; "create_qrcode_content" = "Create QR Code Content";
"history_unfavorite" = "history_unfavorite"; "create_qrcode_generate" = "Generate QR Code";
"input_calendar_content" = "input_calendar_content"; "create_qrcode_title" = "Create QR Code";
"input_contact_content" = "input_contact_content"; "create_qrcode_type" = "Create QR Code Type";
"input_field_content" = "input_field_content";
"input_field_placeholder" = "input_field_placeholder"; // History
"input_field_title" = "input_field_title"; "history_copy" = "Copy History";
"input_hint_content" = "input_hint_content"; "history_delete" = "Delete History";
"input_hint_title" = "input_hint_title"; "history_empty" = "History Empty";
"input_location_content" = "input_location_content"; "history_favorite" = "Favorite History";
"input_phone_content" = "input_phone_content"; "history_share" = "Share History";
"input_social_content" = "input_social_content"; "history_title" = "History";
"input_title_text" = "input_title_text"; "history_unfavorite" = "Unfavorite History";
"input_url_content" = "input_url_content";
"input_wifi_content" = "input_wifi_content"; // Input Components
"keyboard_toolbar_cancel" = "keyboard_toolbar_cancel"; "input_calendar_content" = "Input Calendar Content";
"keyboard_toolbar_done" = "keyboard_toolbar_done"; "input_contact_content" = "Input Contact Content";
"language" = "language"; "input_field_content" = "Input Field Content";
"list_view_empty" = "list_view_empty"; "input_field_placeholder" = "Input Field Placeholder";
"list_view_title" = "list_view_title"; "input_field_title" = "Input Field Title";
"main_title" = "main_title"; "input_hint_content" = "Input Hint Content";
"no" = "no"; "input_hint_title" = "Input Hint Title";
"no_more_data" = "no_more_data"; "input_location_content" = "Input Location Content";
"ok" = "ok"; "input_phone_content" = "Input Phone Content";
"permission_authorized" = "permission_authorized"; "input_social_content" = "Input Social Content";
"permission_denied" = "permission_denied"; "input_title_text" = "Input Title Text";
"permission_limited" = "permission_limited"; "input_url_content" = "Input URL Content";
"permission_not_determined" = "permission_not_determined"; "input_wifi_content" = "Input WiFi Content";
"permission_restricted" = "permission_restricted";
"photo_library_permission" = "photo_library_permission"; // Keyboard Toolbar
"picker_view_cancel" = "picker_view_cancel"; "keyboard_toolbar_cancel" = "Cancel";
"picker_view_done" = "picker_view_done"; "keyboard_toolbar_done" = "Done";
"picker_view_title" = "picker_view_title";
"privacy_policy" = "privacy_policy"; // List View
"qrcode" = "qrcode"; "list_view_empty" = "List Empty";
"qrcode_detail_content" = "qrcode_detail_content"; "list_view_title" = "List Title";
"qrcode_detail_copy" = "qrcode_detail_copy";
"qrcode_detail_share" = "qrcode_detail_share"; // Common
"qrcode_detail_title" = "qrcode_detail_title"; "no" = "No";
"qrcode_detail_type" = "qrcode_detail_type"; "no_more_data" = "No More Data";
"qrcode_preview_save" = "qrcode_preview_save"; "ok" = "OK";
"qrcode_preview_share" = "qrcode_preview_share"; "yes" = "Yes";
"qrcode_preview_title" = "qrcode_preview_title";
"scan" = "scan"; // Permission States
"utility_error" = "utility_error"; "permission_authorized" = "Authorized";
"utility_info" = "utility_info"; "permission_denied" = "Denied";
"utility_success" = "utility_success"; "permission_limited" = "Limited";
"utility_warning" = "utility_warning"; "permission_not_determined" = "Not Determined";
"yes" = "yes"; "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" = "สีเขียวเข้ม"; "olive" = "สีเขียวเข้ม";
"silver" = "สีเงิน"; "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"; "app_name" = "MyQrCode";
"back" = "back";
"barcode_detail_content" = "barcode_detail_content"; // การนำทาง
"barcode_detail_copy" = "barcode_detail_copy"; "back" = "กลับ";
"barcode_detail_share" = "barcode_detail_share"; "edit" = "แก้ไข";
"barcode_detail_title" = "barcode_detail_title"; "history" = "ประวัติ";
"barcode_detail_type" = "barcode_detail_type"; "scan" = "สแกน";
"barcode_preview_save" = "barcode_preview_save";
"barcode_preview_share" = "barcode_preview_share"; // รายละเอียดบาร์โค้ด
"barcode_preview_title" = "barcode_preview_title"; "barcode_detail_content" = "เนื้อหาบาร์โค้ด";
"code_type_calendar" = "code_type_calendar"; "barcode_detail_copy" = "คัดลอกบาร์โค้ด";
"code_type_contact" = "code_type_contact"; "barcode_detail_share" = "แชร์บาร์โค้ด";
"code_type_email" = "code_type_email"; "barcode_detail_title" = "รายละเอียดบาร์โค้ด";
"code_type_location" = "code_type_location"; "barcode_detail_type" = "ประเภทบาร์โค้ด";
"code_type_phone" = "code_type_phone"; "barcode_preview_save" = "บันทึกบาร์โค้ด";
"code_type_selection_title" = "code_type_selection_title"; "barcode_preview_share" = "แชร์บาร์โค้ด";
"code_type_sms" = "code_type_sms"; "barcode_preview_title" = "ตัวอย่างบาร์โค้ด";
"code_type_social" = "code_type_social";
"code_type_text" = "code_type_text"; // ประเภทโค้ด
"code_type_url" = "code_type_url"; "code_type_calendar" = "ปฏิทิน";
"code_type_wifi" = "code_type_wifi"; "code_type_contact" = "รายชื่อติดต่อ";
"create_code_content" = "create_code_content"; "code_type_email" = "อีเมล";
"create_code_generate" = "create_code_generate"; "code_type_location" = "ตำแหน่ง";
"create_code_title" = "create_code_title"; "code_type_phone" = "โทรศัพท์";
"create_code_type" = "create_code_type"; "code_type_selection_title" = "เลือกประเภทโค้ด";
"create_qrcode_content" = "create_qrcode_content"; "code_type_sms" = "ข้อความ";
"create_qrcode_generate" = "create_qrcode_generate"; "code_type_social" = "โซเชียล";
"create_qrcode_title" = "create_qrcode_title"; "code_type_text" = "ข้อความ";
"create_qrcode_type" = "create_qrcode_type"; "code_type_url" = "URL";
"edit" = "edit"; "code_type_wifi" = "WiFi";
"history" = "history";
"history_copy" = "history_copy"; // สร้างโค้ด
"history_delete" = "history_delete"; "create_code_content" = "สร้างเนื้อหาโค้ด";
"history_empty" = "history_empty"; "create_code_generate" = "สร้างโค้ด";
"history_favorite" = "history_favorite"; "create_code_title" = "สร้างโค้ด";
"history_share" = "history_share"; "create_code_type" = "สร้างประเภทโค้ด";
"history_title" = "history_title"; "create_qrcode_content" = "สร้างเนื้อหา QR Code";
"history_unfavorite" = "history_unfavorite"; "create_qrcode_generate" = "สร้าง QR Code";
"input_calendar_content" = "input_calendar_content"; "create_qrcode_title" = "สร้าง QR Code";
"input_contact_content" = "input_contact_content"; "create_qrcode_type" = "สร้างประเภท QR Code";
"input_field_content" = "input_field_content";
"input_field_placeholder" = "input_field_placeholder"; // ประวัติ
"input_field_title" = "input_field_title"; "history_copy" = "คัดลอกประวัติ";
"input_hint_content" = "input_hint_content"; "history_delete" = "ลบประวัติ";
"input_hint_title" = "input_hint_title"; "history_empty" = "ประวัติว่างเปล่า";
"input_location_content" = "input_location_content"; "history_favorite" = "เพิ่มในรายการโปรด";
"input_phone_content" = "input_phone_content"; "history_share" = "แชร์ประวัติ";
"input_social_content" = "input_social_content"; "history_title" = "ประวัติ";
"input_title_text" = "input_title_text"; "history_unfavorite" = "ลบออกจากรายการโปรด";
"input_url_content" = "input_url_content";
"input_wifi_content" = "input_wifi_content"; // องค์ประกอบการป้อนข้อมูล
"keyboard_toolbar_cancel" = "keyboard_toolbar_cancel"; "input_calendar_content" = "ป้อนเนื้อหาปฏิทิน";
"keyboard_toolbar_done" = "keyboard_toolbar_done"; "input_contact_content" = "ป้อนเนื้อหารายชื่อติดต่อ";
"list_view_empty" = "list_view_empty"; "input_field_content" = "ป้อนเนื้อหาฟิลด์";
"list_view_title" = "list_view_title"; "input_field_placeholder" = "ตัวยึดตำแหน่งฟิลด์";
"no" = "no"; "input_field_title" = "ชื่อฟิลด์";
"no_more_data" = "no_more_data"; "input_hint_content" = "เนื้อหาคำแนะนำ";
"ok" = "ok"; "input_hint_title" = "ชื่อคำแนะนำ";
"permission_authorized" = "permission_authorized"; "input_location_content" = "ป้อนเนื้อหาตำแหน่ง";
"permission_denied" = "permission_denied"; "input_phone_content" = "ป้อนเนื้อหาโทรศัพท์";
"permission_limited" = "permission_limited"; "input_social_content" = "ป้อนเนื้อหาโซเชียล";
"permission_not_determined" = "permission_not_determined"; "input_title_text" = "ข้อความชื่อ";
"permission_restricted" = "permission_restricted"; "input_url_content" = "ป้อนเนื้อหา URL";
"photo_library_permission" = "photo_library_permission"; "input_wifi_content" = "ป้อนเนื้อหา WiFi";
"picker_view_cancel" = "picker_view_cancel";
"picker_view_done" = "picker_view_done"; // แถบเครื่องมือคีย์บอร์ด
"picker_view_title" = "picker_view_title"; "keyboard_toolbar_cancel" = "ยกเลิก";
"privacy_policy" = "privacy_policy"; "keyboard_toolbar_done" = "เสร็จสิ้น";
"qrcode_detail_content" = "qrcode_detail_content";
"qrcode_detail_copy" = "qrcode_detail_copy"; // มุมมองรายการ
"qrcode_detail_share" = "qrcode_detail_share"; "list_view_empty" = "รายการว่างเปล่า";
"qrcode_detail_title" = "qrcode_detail_title"; "list_view_title" = "ชื่อรายการ";
"qrcode_detail_type" = "qrcode_detail_type";
"qrcode_preview_save" = "qrcode_preview_save"; // ทั่วไป
"qrcode_preview_share" = "qrcode_preview_share"; "no" = "ไม่";
"qrcode_preview_title" = "qrcode_preview_title"; "no_more_data" = "ไม่มีข้อมูลเพิ่มเติม";
"scan" = "scan"; "ok" = "ตกลง";
"utility_error" = "utility_error"; "yes" = "ใช่";
"utility_info" = "utility_info";
"utility_success" = "utility_success"; // สถานะสิทธิ์
"utility_warning" = "utility_warning"; "permission_authorized" = "ได้รับอนุญาต";
"yes" = "yes"; "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" = "橄榄色"; "olive" = "橄榄色";
"silver" = "银色"; "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"; "app_name" = "MyQrCode";
"back" = "back";
"barcode_detail_content" = "barcode_detail_content"; // 导航
"barcode_detail_copy" = "barcode_detail_copy"; "back" = "返回";
"barcode_detail_share" = "barcode_detail_share"; "edit" = "编辑";
"barcode_detail_title" = "barcode_detail_title"; "history" = "历史记录";
"barcode_detail_type" = "barcode_detail_type"; "scan" = "扫描";
"barcode_preview_save" = "barcode_preview_save";
"barcode_preview_share" = "barcode_preview_share"; // 条形码详情
"barcode_preview_title" = "barcode_preview_title"; "barcode_detail_content" = "条形码内容";
"code_type_calendar" = "code_type_calendar"; "barcode_detail_copy" = "复制条形码";
"code_type_contact" = "code_type_contact"; "barcode_detail_share" = "分享条形码";
"code_type_email" = "code_type_email"; "barcode_detail_title" = "条形码详情";
"code_type_location" = "code_type_location"; "barcode_detail_type" = "条形码类型";
"code_type_phone" = "code_type_phone"; "barcode_preview_save" = "保存条形码";
"code_type_selection_title" = "code_type_selection_title"; "barcode_preview_share" = "分享条形码";
"code_type_sms" = "code_type_sms"; "barcode_preview_title" = "条形码预览";
"code_type_social" = "code_type_social";
"code_type_text" = "code_type_text"; // 代码类型
"code_type_url" = "code_type_url"; "code_type_calendar" = "日历";
"code_type_wifi" = "code_type_wifi"; "code_type_contact" = "联系人";
"create_code_content" = "create_code_content"; "code_type_email" = "邮箱";
"create_code_generate" = "create_code_generate"; "code_type_location" = "位置";
"create_code_title" = "create_code_title"; "code_type_phone" = "电话";
"create_code_type" = "create_code_type"; "code_type_selection_title" = "选择代码类型";
"create_qrcode_content" = "create_qrcode_content"; "code_type_sms" = "短信";
"create_qrcode_generate" = "create_qrcode_generate"; "code_type_social" = "社交";
"create_qrcode_title" = "create_qrcode_title"; "code_type_text" = "文本";
"create_qrcode_type" = "create_qrcode_type"; "code_type_url" = "网址";
"edit" = "edit"; "code_type_wifi" = "WiFi";
"history" = "history";
"history_copy" = "history_copy"; // 创建代码
"history_delete" = "history_delete"; "create_code_content" = "创建代码内容";
"history_empty" = "history_empty"; "create_code_generate" = "生成代码";
"history_favorite" = "history_favorite"; "create_code_title" = "创建代码";
"history_share" = "history_share"; "create_code_type" = "创建代码类型";
"history_title" = "history_title"; "create_qrcode_content" = "创建二维码内容";
"history_unfavorite" = "history_unfavorite"; "create_qrcode_generate" = "生成二维码";
"input_calendar_content" = "input_calendar_content"; "create_qrcode_title" = "创建二维码";
"input_contact_content" = "input_contact_content"; "create_qrcode_type" = "创建二维码类型";
"input_field_content" = "input_field_content";
"input_field_placeholder" = "input_field_placeholder"; // 历史记录
"input_field_title" = "input_field_title"; "history_copy" = "复制历史记录";
"input_hint_content" = "input_hint_content"; "history_delete" = "删除历史记录";
"input_hint_title" = "input_hint_title"; "history_empty" = "历史记录为空";
"input_location_content" = "input_location_content"; "history_favorite" = "收藏历史记录";
"input_phone_content" = "input_phone_content"; "history_share" = "分享历史记录";
"input_social_content" = "input_social_content"; "history_title" = "历史记录";
"input_title_text" = "input_title_text"; "history_unfavorite" = "取消收藏历史记录";
"input_url_content" = "input_url_content";
"input_wifi_content" = "input_wifi_content"; // 输入组件
"keyboard_toolbar_cancel" = "keyboard_toolbar_cancel"; "input_calendar_content" = "输入日历内容";
"keyboard_toolbar_done" = "keyboard_toolbar_done"; "input_contact_content" = "输入联系人内容";
"list_view_empty" = "list_view_empty"; "input_field_content" = "输入字段内容";
"list_view_title" = "list_view_title"; "input_field_placeholder" = "输入字段占位符";
"no" = "no"; "input_field_title" = "输入字段标题";
"no_more_data" = "no_more_data"; "input_hint_content" = "输入提示内容";
"ok" = "ok"; "input_hint_title" = "输入提示标题";
"permission_authorized" = "permission_authorized"; "input_location_content" = "输入位置内容";
"permission_denied" = "permission_denied"; "input_phone_content" = "输入电话内容";
"permission_limited" = "permission_limited"; "input_social_content" = "输入社交内容";
"permission_not_determined" = "permission_not_determined"; "input_title_text" = "输入标题文本";
"permission_restricted" = "permission_restricted"; "input_url_content" = "输入网址内容";
"photo_library_permission" = "photo_library_permission"; "input_wifi_content" = "输入WiFi内容";
"picker_view_cancel" = "picker_view_cancel";
"picker_view_done" = "picker_view_done"; // 键盘工具栏
"picker_view_title" = "picker_view_title"; "keyboard_toolbar_cancel" = "取消";
"privacy_policy" = "privacy_policy"; "keyboard_toolbar_done" = "完成";
"qrcode_detail_content" = "qrcode_detail_content";
"qrcode_detail_copy" = "qrcode_detail_copy"; // 列表视图
"qrcode_detail_share" = "qrcode_detail_share"; "list_view_empty" = "列表为空";
"qrcode_detail_title" = "qrcode_detail_title"; "list_view_title" = "列表标题";
"qrcode_detail_type" = "qrcode_detail_type";
"qrcode_preview_save" = "qrcode_preview_save"; // 通用
"qrcode_preview_share" = "qrcode_preview_share"; "no" = "否";
"qrcode_preview_title" = "qrcode_preview_title"; "no_more_data" = "没有更多数据";
"scan" = "scan"; "ok" = "确定";
"utility_error" = "utility_error"; "yes" = "是";
"utility_info" = "utility_info";
"utility_success" = "utility_success"; // 权限状态
"utility_warning" = "utility_warning"; "permission_authorized" = "已授权";
"yes" = "yes"; "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