Explore best practices for creating inclusive apps that cater to users with diverse abilities

Learn More

Post

Replies

Boosts

Views

Activity

Serbian language fallback
We want to implement Serbian (latin) language in our app. The idea is pretty simple: if user device's preferred language is Serbian (no matter, latin or cyrillic) – we use Serbian latin, which we have in our app. The problem is that it looks like this idea is unimplementable. If we use sr_Latn as code for Serbian latin in our Info.plist, and device's preferred language is just Serbian (which is Cyrillic in iOS) – the fallback in app will be English (default language), not Serbian latin. Reverse is the same: if we implement Serbian latin as sr (just Serbian), then user select Serbian latin (sr_Latn) as device's preferred language – then app language will be English, not Serbian. In the source code published on one of the forum's answer I see that it is expected fallback (unfortunately undocumented). This code is old one, but looks like behavior still persist. Is there any way to implement one Serbian for all cases?
3
0
549
Dec ’23
Issues with String Catalogs comments and git
Hello, I migrated a project to use String Catalogs (Localizable.xcstrings) instead of Localized.strings and Localized.stringsdict files. So far so good, but since I use a lot localized strings in my project, there are quite some localizations used more than once in different contexts and thus with different comments. For example: Source file 1: String(localized: "Something", comment: "Button title for context1") Source file 2: String(localized: "Something", comment: "Column title for context2") This results to a Localized.xcstrings file with this content: { "sourceLanguage" : "en", "strings" : { "Something" : { "comment" : "Column title for context2\nButton title for context1" } }, "version" : "1.0" } The main problem with this is, that the order of the concatenated comment changes randomly during each build. After the next Xcode build (without any code changes), the same Localized.xcstrings file might look like this: { "sourceLanguage" : "en", "strings" : { "Something" : { "comment" : "Button title for context1\nColumn title for context2" } }, "version" : "1.0" } This leads to false positives when trying to commit changes to a git repository, which is quite annoying. Am I the only one, having issues with comments in String Catalogs and git?
1
1
646
Dec ’23
How to correctly add accessibility permissions to a program
I'm writing a program that requires accessibility permissions, and I use AXIsProcessTrustedWithOptions to confirm and direct the user to the accessibility interface for authorization. According to conventional implementation, after the accessibility interface is opened, the system will automatically add the corresponding program, and the user only needs to turn on the permissions. But now, with accessibility turned on, I don't see my program loading automatically. Next, I tried to add it manually, click + on the accessibility interface, select the program I built and then add it. But when I clicked Add, my program was not successfully added. The accessibility interface still did not see my program being loaded, and the user could not open permissions for it. I think this has nothing to do with whether it is a development version, because I tried other debug programs developed and compiled with xcode and they were able to be added normally. So I want to know, what are the reasons why it cannot be added? Which parts should I check from?
1
0
385
Dec ’23
Unable to open dependencies file after Localization
Hi everyone, I'm currently working on a React Native app and need assistance with localization. Specifically, I've added an InfoPlist.strings file for NSUserTrackingUsageDescription and created language-specific files for each supported language. However, when I try to build the app in Xcode (version 15.0.1), I encounter the following error: error: unable to open dependencies file (/Users/myname/Library/Developer/Xcode/DerivedData/myproject-bxfjslkrewxnfcgmeelilvixy/Build/Intermediates.noindex/myproject.build/Debug-iphonesimulator/myproject.build/DerivedSources/Users/myname/projects/project-folder/ios/en.lproj/InfoPlist.strings.d) (in target 'myproject' from project 'myproject') Any insights or solutions would be greatly appreciated. Thank you!
1
0
769
Dec ’23
Accessibility Identifier lost on Xcode 15.1 and iOS 17.2
We recently updated to Xcode 15.1 and start using iOS 17.2 simulator and ran into a blocker issue with out UITests. Setting accessibility identifier on a UIButton with image no longer works. It seems iOS automatically set the label to the file name used for the button and ignore (overwrite) the id and value we set in code. iOS 17.0 with Xcode 15.1 still works. I spent 2 days on this and still cannot find a solution. Anyone had similar issue? I did file a feedback https://feedbackassistant.apple.com/feedback/13515676 Thanks!
0
0
542
Jan ’24
Website banner language issue
Hello everyone ! I currently experience an issue with the language of our website banners. Despite having translations set in Localizable Information for titles in English, French, German and Italian, the banners aren't adapting to the user's chosen language. The title always displays in French, while subtitle ("Open in the app") remains in English, irrespective of the user's language preference. Would anyone know how can I make sure that our banners dynamically translate according to the user's language choice? Is there a setting somewhere in the apple product page that I'm missing? Thanks
0
0
263
Jan ’24
`AXObserverCallback`: Get notification timestamp
Hi, I'm currently registering notifications on numerous AXUIElementRefs. I would like to find a timestamp of when each event occurs, however, I cannot find a reliable way to do so. Getting a timestamp when the callback is called isn't reliable because the order of callback execution is arbitrary. I know the run loop API is mostly open sourced, and this is a bit of a reach, but is it possible to hook into the CFRunLoopSourceSignal call from the AXObserverRef? Somewhere in the Apple API stack these notifications are being triggered. My question is, do they record the timestamp and are there any public or private APIs to gather this information? My goal is to reliably gather in what order certain events happen (e.g. window move, focus, etc.).
0
1
272
Jan ’24
Localization in Xcode info
I have now finished my app I am learning with for different translations in different localizations and have placed the strings in the StringCatalog. I still have one question about the localization: In my project info I have added the item Localization and added the value German. So far I have told the AppStore that the app language is German. Can I delete this localization item in the info now? Or what does this entry do (see screenshot)? Due to the different languages in the StringCatalog, I now have the languages of the StringCatalog in the project settings under Localizations. This is always followed by Resources 0 Files Localized. What is this all about?
0
0
314
Jan ’24
Accessibility inspector Audit with simulator
I'm experiencing an issue with the Accessibility Inspector. It's worked fine. Since the update, I'm unable to perform an audit while in the Simulator. I have the following message: "Select a target app to view Accessibility warnings and audit information." However, VoiceOver and Dynamic Type functionalities are working fine. The audit only works when I test on my iPhone. How can I connect the target for the audit? Thank you. Accessibility Inspector V5 Simuator 15.2
2
0
432
Feb ’24
xcstrings file in not being updated
I'm using Xcode 15.2 and have migrated my (macOS) project to use an xcstrings file a while back. Now when I check the xcstrings file, all items are marked as "stale". When I add new localized strings in code, they don't show up in the xcstrings file. The xcstrings file is built correctly (into .lproj/Localizable.strings) when building. Where can I check which source files are checked to update xcstrings status? "xcstringstool" appears to have a "sync" feature which reads "stringsdata" files, but there is no information in the xcstringstool help on where the stringsdata files come from. If I create a new project I can see a "stringsdata" file being generated for each source file in the intermediate build products folder.
2
0
811
Feb ’24
Important Accessibility Option - Native Keyboard Input
I want to trigger a "pinch" where I can select whatever it is I'm looking at via pressing spacebar on a bluetooth keyboard that is paired with the apple vision pro. Is this feasible in Xcode or Unity (VisionOS development) where I not only have access to see native keyboard presses, but also can see the gaze position (or what it's currently highlighting/focusing on) without accessing it through an interaction event. If keyboard press, then select item being gazed at. We wont have "pinch" available for people with hand/arm impairments that will trigger an interaction event, and there are an array of accessibility devices that send keyboard commands that would be able to aid in this. Apple should have this ability in it's native settings, specifically with using keyboard commands as well. This app would demonstrate that ability without it being native yet, and any help would be greatkly appreciated :)
0
0
354
Mar ’24
Swift Charts Accessibility Bug
I've been working on migrating some graphics to Swift Charts for an app I work on. However I've been noticing strange behavior when it comes to VoiceOver. If I create a bar chart and use: BarMark(x: .value("Month", x, unit: .month), y: ...) While the chart looks fine, the voice over values seem to follow arbitrary values set for the bin. From what I can tell they are following the underlying bin values that Swift Charts uses to provide spacing between bars. For instance, this simple example: let monthlyRevenueData = [ (x: try! Date("2024-01-01T00:00:00Z", strategy: .iso8601), y: (income: 55000, revenue: 124000), id: UUID()), (x: try! Date("2024-02-01T00:00:00Z", strategy: .iso8601), y: (income: 58000, revenue: 130000), id: UUID()), (x: try! Date("2024-03-01T00:00:00Z", strategy: .iso8601), y: (income: 59000, revenue: 120000), id: UUID()), ] struct ContentView: View { var body: some View { Chart(monthlyRevenueData, id: \.id) { (x, y, _) in BarMark(x: .value("Month", x, unit: .month), y: .value("Income", y.income)) .foregroundStyle(.green) BarMark(x: .value("Month", x, unit: .month), y: .value("Revenue", y.revenue)) } } } #Preview { ContentView() } Results in the Voice Over reading "January 14th 2024 at 12 AM to January 28th 2024 at 12am ..." despite the fact that the data should be for the entire month of Jan. Is there any way to get VoiceOver to read the input data rather than relying on how the chart is formatted? Preferably without the need to remove all visual spacing between the bars. Video link: https://drive.google.com/file/d/11mxCl3wR2HzoOaihOvci-vZk4zgG1d39/view?usp=drive_link
0
0
408
Mar ’24
xcode 15 LS instead of LF in the xcloc files
Hi, I'm parsing iOS localization files and during tests with xcode 15 i noticed new lines appear in the xcloc files with LS instead of the usual LF i was used to. Questions: is this the default behavior in xcode 15? Has this changed with this version? is this controllable by any settings? Disclaimer: not a iOS developer here, please pardon any confusions and have patience.
2
0
394
Mar ’24
(API to) switching device/display using keyboard with Universal Control
Universal Control works to share keyboard and mouse from one mac to another, but actually switching seems to require physically moving the mouse to the other display. Ideally, I'd like Apple to support some command available via command-key equivalents to cycle to other devices in the way that we can cycle through applications or windows. Seeking to program that directly, I was unable to find any Universal Control API's on point. Are there any? I can imagine restricted this to the OS only for security. In case there are display-driven API's, I see that system settings/displays shows all the displays from all devices, but I was unable to find a UI or API's to change focus to another display (other than moving the mouse to select the display). When I list displays programmatically, I only see the device-local displays. In case there are device-driven APIs: I can initialize a bluetooth session and secure credentials, but interaction seems to be unavailable.
1
0
404
Mar ’24
Deep link to Accessibility->Personal Voice
My app speaks and offers the user the ability to use their Personal Voice - but if the user says "No" when I first ask them for permission to use their Personal Voice, I can never ask them again. So if they change their mind later - they have to go to Settings->Accessibility->Personal Voice to toggle the permission for my app. To make things easier for them, I would like to be able to pop open that page for them - but I don't know how to create the URL for it. Is it even possible? The closest I've been able to get is to open the settings page for my app (Settings->My App Settings) with: guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {return } if UIApplication.shared.canOpenURL(settingsUrl) { UIApplication.shared.open(settingsUrl) } Thanks in advance!
0
0
353
Mar ’24
ISSUE: iPhone validation issue while entering English Characters using Japanese Keyboard
Application: HTML,Javascript,Angular web Application Issue: In Iphone/Ipad while trying to enter English characters using Japanese keyboard in the input field the japanese keyboard freezes and stops working after entering the first character. Root Cause: Two validations given in the onInput call back method causes the issue. when the validation are removed keyboard is working fine 1.for converting lowercase letters to uppercase 2.Some Character are not allowed so they are replaced after input
0
0
491
Mar ’24