Missing Localized Strings Here Office For Mac 2016

A framework is a hierarchical directory that encapsulates a dynamic library, header files, and resources, such as storyboards, image files, and localized strings, into a single package. Apps using frameworks need to embed the framework in the app's bundle. Support for Office 2016 for Mac ended on October 13, 2020. Rest assured that all your Office 2016 apps will continue to function—they won't disappear from your Mac, nor will you lose any data. However, you could expose yourself to serious and potentially harmful security risks. Try Microsoft 365 for free. Here's what the end of support means.

An information property list file is a structured text file that contains essential configuration information for a bundled executable. The file itself is typically encoded using the Unicode UTF-8 encoding and the contents are structured using XML. The root XML node is a dictionary, whose contents are a set of keys and values describing different aspects of the bundle. The system uses these keys and values to obtain information about your app and how it is configured. As a result, all bundled executables (plug-ins, frameworks, and apps) are expected to have an information property list file.

  1. Collaborate for free with online versions of Microsoft Word, PowerPoint, Excel, and OneNote. Save documents, spreadsheets, and presentations online, in OneDrive.
  2. The individual messages are not files themselves. They are contained in a SQL database. Your backup simply needs to include the database, which is contained within an Outlook 15 Profile. Here's the file path: Macintosh HD:Users:UserName:Library:Group Containers:UBF8T346G9.Office:Outlook:Outlook 15 Profiles.

By convention, the name of an information property list file is Info.plist. This name of this file is case sensitive and must have an initial capital letter I. In iOS apps, this file resides in the top-level of the bundle directory. In macOS bundles, this file resides in the bundle’s Contents directory. Xcode typically creates this file for you automatically when you create a project of an appropriate type.

Important: In the sections that follow, pay attention to the capitalization of files and directories that reside inside a bundle. The NSBundle class and Core Foundation bundle functions consider case when searching for resources inside a bundle directory. Case mismatches could prevent you from finding your resources at runtime.

Creating and Editing an Information Property List File

The simplest way to create an information property list file is to let Xcode create it for you. Each new bundle-based project that you create in Xcode comes with a file named <project>-Info.plist, where <project> is the name of the project. At build time, this file is used to generate the Info.plist file that is then included in the resulting bundle.

To edit the contents of your information property list file, select the <project>-Info.plist file in your Xcode project to display the property list editor. Figure 1 shows the editor for the information property list file of a new Cocoa app project. The file created by Xcode comes preconfigured with keys that every information property list should have.

To edit the value for a specify key, double-click the value in the Xcode property list editor to select it, then type a new value. Most values are specified as strings but Xcode also supports several other scalar types. You can also specify complex types such as an array or dictionary. The property list editor displays an appropriate interface for editing each type. To change the type of a given value, make sure the value is not selected and Control-click it to display its contextual menu. From the Value Type submenu, select the type you want to use for the value.

Because information property lists are usually just text files, you can also edit them using any text editor that supports the UTF-8 file encoding. Because they are XML files, however, editing property list files manually is generally discouraged.

Adding Keys to an Information Property List File

Although the Info.plist file provided by Xcode contains the most critical keys required by the system, most apps should typically specify several additional keys. Many subsystems and system apps use the Info.plist file to gather information about your app. For example, when the user chooses File > Get Info for your app, the Finder displays information from many of these keys in the resulting information window.

You add keys to your app’s Info.plist using the Xcode property list editor. For information about how to use this editor, see “Edit property lists.”

Important: The property list editor in Xcode displays human-readable strings (instead of the actual key name) for many keys by default. To display the actual key names as they appear in the Info.plist file, Control-click any of the keys in the editor window and enable the Show Raw Keys/Values item in the contextual menu.

For a list of the recommended keys you should include in a typical app, see Recommended Info.plist Keys.

Localizing Property List Values

The values for many keys in an information property list file are human-readable strings that are displayed to the user by the Finder or your own app. When you localize your app, you should be sure to localize the values for these strings in addition to the rest of your app’s content.

Localized values are not stored in the Info.plist file itself. Instead, you store the values for a particular localization in a strings file with the name InfoPlist.strings. You place this file in the same language-specific project directory that you use to store other resources for the same localization. The contents of the InfoPlist.strings file are the individual keys you want localized and the appropriately translated value. The routines that look up key values in the Info.plist file take the user’s language preferences into account and return the localized version of the key (from the appropriate InfoPlist.strings file) when one exists. If a localized version of a key does not exist, the routines return the value stored in the Info.plist file.

For example, the TextEdit app has several keys that are displayed in the Finder and thus should be localized. Suppose your information property list file defines the following keys:

The French localization for TextEdit then includes the following strings in the InfoPlist.strings file of its Contents/Resources/French.lproj directory:

For more information about the placement of InfoPlist.strings files in your bundle, see Bundle Programming Guide. For information about creating strings files, see Resource Programming Guide. For additional information about the localization process, see Internationalization and Localization Guide.

Creating Platform- and Device-Specific Keys

You can designate a key in an Info.plist file as applying to a specific platform, a specific device type, or both. To create a platform- or device-specific key variant, combine a root key name with one or two qualifiers, using the following pattern:

key_root-<platform>~<device>

In this pattern, the key_root portion represents the original name of the key, as you find it in this document. The <platform> and <device> portions are optional and restrict the key’s applicability to a specific platform or device type. Notice that if you employ a platform qualifier, connect it with a hyphen (-), and if you employ a device qualifier, connect it with a tilde (~).

Use of a device qualifier is much more common than is use of a platform qualifier.

For a device qualifier, you can use one of the following values:

  • iphone The key applies to iPhone devices only

  • ipod The key applies to iPod touch devices only

  • ipad The key applies to iPad devices only

For a platform qualifier, you can specify a value of iphoneos or macos depending on which of these two platforms you are targeting.

When specifying a key variant, do so in addition to employing a corresponding key without any qualifiers, thereby ensuring you provide a reasonable default value. When the system searches for a key in your app’s Info.plist file, it chooses the key that is most specific to the current device and platform. If it does not find a qualified key, it looks for one without qualifiers. For example, to specify support for all device orientations on iPad, and three orientations for iPhone, the Xcode templates specify the corresponding keys in an app’s Info.plist file:

Custom Keys

iOS and macOS ignore custom keys you include in an Info.plist file. If you want to include app-specific configuration information in your Info.plist file, you can do so freely as long as your key names do not conflict with the ones Apple uses. When defining custom key names, prefix them with a unique prefix, such as your app’s bundle ID or your company’s domain name, to prevent conflicts.

Recommended Info.plist Keys

Each of the Xcode application templates includes an Info.plist file, but you can also construct one from scratch. When creating an information property list file, there are several keys you should always include. These keys are almost always accessed by the system and providing them ensures that the system has the information it needs to work with your app effectively.

Recommended Keys for iOS Apps

It is recommended that an iOS app include the following keys in its information property list file. Most are set by Xcode automatically when you create your project.

In addition to these keys, there are several that are commonly included:

  • UIRequiredDeviceCapabilities (required)

For descriptions of these keys, see the other chapters of this book.

Recommended Keys for Cocoa Apps

It is recommended that a Cocoa app include the following keys in its information property list file. Most are set by Xcode automatically when you create your project but some may need to be added.

These keys identify your app to the system and provide some basic information about the services it provides. Cocoa apps should also include the following keys to identify key resources in the bundle:

Note: If you are building a Cocoa app using an Xcode template, the NSMainNibFile and NSPrincipalClass keys are typically already set in the template project.

For descriptions of these keys, see the other chapters of this book.

Commonly Localized Keys

In addition to the recommended keys, there are several keys that should be localized and placed in your language-specific InfoPlist.strings files:

For more information about localizing information property list keys, see Localizing Property List Values.



Copyright © 2018 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2018-06-04

Technical Note TN2435

This tech note is for app developers on macOS, iOS, watchOS, and tvOS who are modularizing their code into frameworks. It demonstrates how to embed frameworks built as dependencies of an app for different project configurations. This tech note also provides troubleshooting steps for common issues encountered when embedding frameworks.

Configuring Your Project
Embedding a Framework
Troubleshooting

What is a framework?

A framework is a hierarchical directory that encapsulates a dynamic library, header files, and resources, such as storyboards, image files, and localized strings, into a single package. Apps using frameworks need to embed the framework in the app's bundle.

Adding A Framework Target

Apps wishing to utilize frameworks to share code across different parts of their application, such as between an app and an app extension, need to start from the framework template appropriate for the app's target platform. The framework target can be added to the same project as the app target, or it can be added to a separate Xcode project.

  1. Create a new Xcode target and select the framework template appropriate for your app's target platform.

  2. Add all of the framework source files to the new target's Compile Sources build phase.

  3. Set the visibility of header files needed by clients of the framework to Public.

  4. Add the public headers to the umbrella header file. If your framework is named YourFramework, the umbrella header is named YourFramework.h.

  5. Follow the steps in Configuring Your Project to configure the new framework target as a dependency of the app target.

Configuring Your Project

Before embedding a framework, set up your Xcode project so the app target depends on the framework target. The following sections describe how to set up this dependency for common project scenarios.

Apps with One Xcode Project

Apps with one Xcode project containing an app target and a framework target can go on to the Embedding a Framework section.

Apps with Multiple Xcode Projects

Apps not using an Xcode workspace that depend on a framework in a different Xcode project should configure the app project using these instructions:

  1. Open the app’s Xcode project.

  2. In Finder, locate the framework Xcode project. Drag this Xcode project from Finder to the Project Navigator, inside of the app project. This nests a reference to the framework project in the app project, as shown in Figure 1.

  3. Follow the steps in Embedding a Framework.

Apps with an Xcode Workspace and Multiple Xcode Projects

Apps using an Xcode workspace that depend on a framework in a different Xcode project should configure the app project using these instructions:

  1. Open the Xcode workspace.

  2. Add each Xcode project to the workspace with File > Add Files to 'Workspace Name.'

  3. Follow the steps in Embedding a Framework.

Apps with Dependencies Between Frameworks

An umbrella framework is a framework bundle that contains other frameworks. While it is possible to create umbrella frameworks for macOS apps, doing so is unnecessary for most developers and is not recommended. Umbrella frameworks are not supported on iOS, watchOS, or tvOS.

In nearly all cases, you should include your code in a single, standard framework bundle. If your code is sufficiently modular, you can create multiple frameworks, where the dependencies between frameworks is minimal or nonexistent.

If your app has dependencies between frameworks, configure the dependency with these instructions:

  1. In the framework target's General settings, add the frameworks it depends on to the Linked Frameworks and Libraries section, as shown in Figure 2.

  2. In the app project, follow the instructions for Embedding a Framework. The app target is responsible for embedding all of the frameworks, including any frameworks that other frameworks depend on.

Embedding a Framework

The steps to embed a framework vary, depending on the type of app you are building. The following sections describe how to embed the framework inside the built app for the different types of apps.

Embedding a Framework in an iMessage App

Important: This section only applies to iMessage apps. For iOS apps providing an iMessage Extension, see Embedding a Framework in iOS, macOS, watchOS, and tvOS Apps.

  1. Open the iMessage app’s Xcode project or workspace.

  2. Go to the Build Phases for the iMessage extension target.

  3. Add the framework to the Link Binaries With Libraries list. See Figure 3.

  4. Go to the Build Phases for the iMessage app target.

  5. Add a New Copy Files Phase by selecting the Add icon, highlighted in Figure 4. Set the Destination field to Frameworks, and add the framework to the list. Ensure Code Sign on Copy is checked.

Embedding a Framework in iOS, macOS, watchOS, and tvOS Apps

  1. Open the app’s Xcode project or workspace.

  2. Go to the app target’s General configuration page.

  3. Add the framework target to the Embedded Binaries section by clicking the Add icon, highlighted in Figure 5. Do not drag in the framework from Finder.

  4. Select your framework from the list of binaries that can be embedded.

Missing Localized Strings Here Office For Mac 2016 Version

Troubleshooting

The following sections describe common errors when embedding frameworks, and steps for resolving each type of error.

Configuration Errors

The following errors are caused by a project configuration that embeds a framework built for a build configuration that is different from the build configuration for the app.

To fix any of these errors:

  1. Open the Project Navigator.

  2. Look for items referencing a framework that your app builds as a dependency that is not in the Products section. Figure 6 shows an example.

  3. Delete this item from the Project Navigator. Select 'Remove Reference' on the confirmation dialog.

  4. Follow the steps in Configuring Your Project.

Bundle Errors

Missing Framework Bundle

The following error indicates a framework is missing from the app bundle.

To fix this error:

  1. Follow the steps in Inspecting A Binary's Linkage.

  2. In the results from the previous step, find the lines starting with @rpath that are not listed in the Embedded Binaries section in the app target's General settings.

  3. Remove the frameworks identified in the previous step from the Linked Frameworks and Libraries section in the app target's General settings.

  4. Embed the frameworks by following the steps in Embedding a Framework.

Embedded .dylib Files

The following errors may indicate your app is embedding a dynamic library that is not packaged as a framework. Dynamic libraries outside of a framework bundle, which typically have the file extension .dylib, are not supported on iOS, watchOS, or tvOS, except for the system Swift libraries provided by Xcode.

To determine if the cause of these errors is due to having a dynamic library outside of framework:

  1. In the Xcode Organizer, right click on the archive producing the error and select 'Show In Finder.'

  2. Right click on the .xcarchive and select 'Show Package Contents.'

  3. Navigate to the Products/Applications directory.

  4. Open Terminal, and run the command in Listing 1. You can drag and drop the .app from Finder to Terminal to fill in the path.

  5. Look for any file in the output whose name does not begin with libSwift.

  6. Convert the library identified in the previous step to a framework by following the steps in Adding A Framework Target.

Note: The Invalid Swift Support errors shown here can also indicate a problem with how the app was archived. If you didn't find any dynamic libraries in the Terminal output above, consult the Xcode documentation for submitting apps to the App Store to ensure that you are using the correct archive process for the App Store.

Listing 1 Terminal command to find .dylib files

Embedded Static Libraries

The following error indicates your app embedded a static library.

Missing Localized Strings Here Office For Mac 2016 Free

Missing localized strings here office for mac 2016

This is caused by placing a static library in a bundle structure that looks like a framework; this packaging is sometimes referred to by third party framework developers as a static framework. Since the binary in these situations is a static library, apps cannot embed it in the app bundle.

If you are building your own static library and using shell scripts to package it in a .framework directory, you need to migrate to building a framework with a dynamic library instead, as this is the correct way to build a framework. Static frameworks are not a supported way of sharing static libraries. To migrate to a framework using a dynamic library, consult Adding A Framework Target.

If you use third party libraries that you do not build yourself, you can solve this error by identifying the static framework and removing it from the Embedded Binaries section.

  1. Follow the steps in Inspecting A Binary's Linkage.

  2. In the results from the previous step, compare the entries starting with @rpath in the Terminal output to the libraries listed in the Embedded Binaries section on the app target's General settings. Any library listed in the app target's General settings but not the Terminal output is likely the source of the problem.

  3. Confirm each of the libraries identified in the previous step is a static library by running the command in Listing 2 in the Terminal. If the library is a static library, the output of the file command will look like Listing 3.

  4. Once you've confirmed the library is static, go to the Build Phases for the app target in Xcode. Remove this library from any build phase named 'Copy Files' or 'Embed Frameworks.' The library should remain in the 'Link Binary with Libraries' section.

Listing 2 Terminal command to determine if a binary is a static library

Listing 3 Example output for a static library

Inspecting A Binary's Linkage

Some errors require inspecting a binary to see what libraries it is linked against, and comparing this information to the project setup in Xcode. Follow these steps to inspect the binary when directed to by specific troubleshooting sections, and use the results as indicated by that troubleshooting section.

  1. In the Xcode Organizer, right click on the archive producing the error and select 'Show In Finder.'

  2. Right click on the .xcarchive and select 'Show Package Contents.'

  3. Navigate to the Products/Applications directory. Right click on the .app and select 'Show Package Contents.'

  4. Find your app's binary, usually named the same as the app's target in Xcode. Open Terminal, and run the command in Listing 4. You can drag and drop the binary from Finder to the Terminal to fill in the path.

  5. Repeat these steps for any app extensions or frameworks in your .app. Make sure to give the otool command the path to the binary, and not the outer .framework or .appex directory.

Listing 4 Terminal command to list all of the libraries dynamically linked to a binary

The output of this Terminal command lists all of the dynamic libraries a binary is linked against, for each architecture in the binary.

Note: The system Swift libraries (libraries whose name starts with libSwift) will be listed in the Terminal output, but not in Embedded Binaries section of the app target's General settings. This is expected.


Document Revision History


DateNotes
2017-03-14

Added information for embedding frameworks in iMessage apps and expanded Troubleshooting section

2016-09-13

New document that demonstrates how to embed a framework for different project configurations, and how to troubleshoot common errors

Missing Localized Strings Here Office For Mac 2016 Torrent



Missing Localized Strings Here Office For Mac 2016


Missing Localized Strings Here Office For Mac 2016 Download

Copyright © 2017 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2017-03-14