Files
MapLibreParticleLab/platform/ios/resources/Base.lproj/Localizable.strings
Minh Nguyễn 2955fb594c Make places and roads accessible to VoiceOver (#9950)
* [ios] Summarize places, roads after zooming with VoiceOver

After zooming, MGLMapView’s accessibility value now indicates the number of visible roads and lists out a few places visible in the current viewport, starting with the features at the highest z-index (not necessarily the largest or the closest to the center of the view). Avoid saying that no annotations are visible.

* [ios] Allow VoiceOver to navigate among place features

Split out a separate header for the various accessibility elements tied to MGLMapView. Wrap place features in accessibility elements and insert them into the narration order after the visible annotations but before the attribution button. Refactored MGLMapView’s accessibility code to rely on ranges to avoid off-by-one errors.

* [ios] Post layout change notification when fully rendered

Post a layout change notification when fully finishing a map render.

* [ios, macos] Moved MGLVectorSource+MGLAdditions to more specific group

* [ios] Localize accessibility feature names

* [ios] Find place feature accessibility elements by identifier

* [ios] Refactored accessibility traits

Also created a new MGLPlaceFeatureAccessibilityElement class.

* [ios] Sort accessibility elements by screen distance from center

Sort annotation accessibility elements by screen distance, not the hypotenuse of coordinates, which can yield incorrect results when the map is rotated or tilted or when the user is located at high latitudes. Sort place feature accessibility elements by screen distance as well.

* [ios] Create a place feature accessibility element, not an abstract feature accessibility element

* [ios] Only query for visible place features once per camera

Improved accessibility performance after changing the map camera. MGLMapView no longer queries the map for place features once per place feature.

* [ios] Made roads accessible

Wrap visible road features in accessibility elements described by the road name, route number, and general direction of travel.

* [ios] Cleaned up radian conversions

* [ios] Thickened road accessibility elements

* [ios] Made unioned roads accessible

* [ios] Consistently sort accessibility elements

Also fixed an issue causing road feature accessibility elements to get treated like place feature accessibility elements.

* [ios] Announce direction of divided roads

Announce the direction of a divided road based on the direction of its first polyline.

* [ios] Refined announced elevation units

* [ios] Romanize feature names

* [ios] Updated changelog

* [ios] Delay zoom announcement

A 100-millisecond delay is enough for the post-zooming announcement to reflect the new zoom level rather than the previous zoom level.

* [ios] Consolidated geometry functions

Adopted MGLGeometry_Private.h in the accessibility code, forcing a conversion to Objective-C++. Avoid inlining some of the more complex geometric functions.

* [ios] Fixed feature name romanization in accessibility labels

NSLocale.scriptCode is only set when the locale identifier explicitly specifies a script. Use NSOrthography to identify the dominant orthography regardless of locale.

Also added a unit test of feature accessibility element labels.

* [ios] Added tests for place, road accessibility values

* [ios] Announce one-way roads

A road feature’s accessibility value now indicates whether the road is a one-way road.
2017-11-03 12:17:45 -07:00

115 lines
3.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Accessibility hint */
"ANNOTATION_A11Y_HINT" = "Shows more info";
/* No comment provided by engineer. */
"API_CLIENT_400_DESC" = "The session data task failed. Original request was: %@";
/* No comment provided by engineer. */
"API_CLIENT_400_REASON" = "The status code was %ld";
/* No comment provided by engineer. */
"CANCEL" = "Cancel";
/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
"CLOSE_CALLOUT_A11Y_HINT" = "Returns to the map";
/* Accessibility hint */
"COMPASS_A11Y_HINT" = "Rotates the map to face due north";
/* Accessibility label */
"COMPASS_A11Y_LABEL" = "Compass";
/* Compass abbreviation for north */
"COMPASS_NORTH" = "N";
/* Instructions in Interface Builder designable; {key}, {plist file name} */
"DESIGNABLE" = "To display a Mapbox-hosted map here, set %1$@ to your access token in %2$@\n\nFor detailed instructions, see:";
/* Setup documentation URL display string; keep as short as possible */
"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
/* Accessibility hint */
"INFO_A11Y_HINT" = "Shows credits, a feedback form, and more";
/* Accessibility label */
"INFO_A11Y_LABEL" = "About this map";
/* List separator */
"LIST_SEPARATOR" = ", ";
/* User-friendly error description */
"LOAD_MAP_FAILED_DESC" = "The map failed to load because an unknown error occurred.";
/* User-friendly error description */
"LOAD_STYLE_FAILED_DESC" = "The map failed to load because the style can't be loaded.";
/* Accessibility label */
"LOGO_A11Y_LABEL" = "Mapbox";
/* Accessibility label */
"MAP_A11Y_LABEL" = "Map";
/* Map accessibility value; {number of visible annotations} */
"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld annotation(s) visible.";
/* Map accessibility value; {list of visible places} */
"MAP_A11Y_VALUE_PLACES" = "Places visible: %@.";
/* Map accessibility value; {number of visible roads} */
"MAP_A11Y_VALUE_ROADS" = "%ld road(s) visible.";
/* Map accessibility value; {zoom level} */
"MAP_A11Y_VALUE_ZOOM" = "Zoom %dx.";
/* User-friendly error description */
"PARSE_STYLE_FAILED_DESC" = "The map failed to load because the style is corrupted.";
/* Accessibility value indicating that a road is a divided road (dual carriageway) */
"ROAD_DIVIDED_A11Y_VALUE" = "Divided road";
/* Accessibility value indicating that a road is a one-way road */
"ROAD_ONEWAY_A11Y_VALUE" = "One way";
/* String format for accessibility value for road feature; {route number} */
"ROAD_REF_A11Y_FMT" = "Route %@";
/* Action sheet title */
"SDK_NAME" = "Mapbox iOS SDK";
/* Developer-only SDK update notification; {latest version, in format x.x.x} */
"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK version %@ is now available:";
/* User-friendly error description */
"STYLE_NOT_FOUND_DESC" = "The map failed to load because the style can’t be found or is incompatible.";
/* Telemetry prompt message */
"TELEMETRY_DISABLED_MSG" = "You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
/* Telemetry prompt button */
"TELEMETRY_DISABLED_OFF" = "Don’t Participate";
/* Telemetry prompt button */
"TELEMETRY_DISABLED_ON" = "Participate";
/* Telemetry prompt message */
"TELEMETRY_ENABLED_MSG" = "You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
/* Telemetry prompt button */
"TELEMETRY_ENABLED_OFF" = "Stop Participating";
/* Telemetry prompt button */
"TELEMETRY_ENABLED_ON" = "Keep Participating";
/* Telemetry prompt button */
"TELEMETRY_MORE" = "Tell Me More";
/* Action in attribution sheet */
"TELEMETRY_NAME" = "Mapbox Telemetry";
/* Telemetry prompt title */
"TELEMETRY_TITLE" = "Make Mapbox Maps Better";
/* Default user location annotation title */
"USER_DOT_TITLE" = "You Are Here";