Failing to localize WIndows 8 App with Multilingual App Toolkit - localization

I'm trying to localize my Windows 8 App with the Multilingual App Toolkit.
And for that I tried to follow this explanation to the point:
http://channel9.msdn.com/posts/Build-Multi-language-apps-using-the-Multilingual-App-Toolkit
but it fails with the following Output:
1> Multilingual App Toolkit build started.
1> Merge of Loc PRI file failed calling makepri.exe: '0x80073B08'
1> Multilingual App Toolkit build completed with errors.
I can't find anything for 0x80073B08.
If I remove all xlf language files from the project it compiles, is able to launch and to build a store package.
But as soon as there is any language file included it failes to build with the error above.
Any Ideas?
EDIT:
I'm using c# and a single resw file.
Everything works as long as I don't include any xlf files.
There are no duplicate keys (except partly duplicate like "MyButton.Text", "MyButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip")
EDIT2:
Seems like the real problem is the extension format, e.g.:
ClearNotesButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip
or
AddPageButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name
if I use those makepri throws the exception above.
Does this mean I can't set the Tooltip and the Text of a Button via the x:Uid mechanism?

This error code indicates that a (localized) resource add was attempted, but the source resource is not in the PRI file. Three conditions were recently discovered that can cause this condition for resources.
A duplicate resource exists in the resjson file.
JavaScript Example:
"Cancel" : "Cancel"
"cancel" : "Cancel" <-- Duplicate resource
A resource ID conflicts with a different resource with the same base path information.
JavaScript Example:
"About" : "About title"
"About/OKBtn" : "OK". <-- Resource path is the same as a previous resource's ID
XAML Example:
MyButton : "Button without property"
MyButton.Content : "Hallo Welt" <-- Becomes MyButton/Content, which conflicts with MyButton ID
A resource ID contains the same name as the resource file.
Common Example:
Filename: Resources.resjson
"Dialog/Resources/Title" : "Welcome"
Please look for these conflicts as they are know to cause this error message. You could also see this error on the preview version. Please ensure that you are running the released version of the toolkit - it is v1.0.1114.0.

A new version of the Multilingual App Toolkit has been released that will help identify when this issue happens so you can easily adjust the resources. All three known issues are resolved with this release. The version is v1.1.1075.0 as displayed in the VS IDE Extensions and Updates dialog.

Related

Apple/fastlane submit for review action failing with unclear error message about privacy text

I am following fastlane's default configuration conventions for a React Native project. That is to say, my project structure looks like (e.g.):
/ios/fastlane/metadata/en-GB
with the en-GB subdirectory containing the following files:
description.txt
keywords.txt
name.txt
privacy_url.txt
release_notes.txt
support_url.txt
Everything was working perfectly until I tried to internationalise.
Now, when fastlane's upload_to_app_store() (aliased with deliver()) runs in my CI/CD pipeline, it fails and I see the following error:
The provided entity is missing a required attribute - You must provide a value for the attribute 'privacyPolicyText' with this request - /data/attributes/privacyPolicyText
I already have privacy_url.txt in there which was previously sufficient.
The thing that fixed it was adding a apple_tv_privacy_policy.txt (just containing a URL pointing to our privacy policy) file to the en-GB subdirectory.
Weird, given that the Fastfile was working completely fine before without any sort of privacy policy for TV. Very frustrating error message!

Xamarin Android Multi Dex app with a custom application class that runs on pre-Lollipop

There are a quite a few posts scattered around about this but my question is:
Has anyone managed to successfully build a MultiDex enabled app that utilizes a custom Application class that will run on pre - Lollipop devices?
For people who wanted to learn more about it keep reading.
The issues is that when creating a MultiDex app that uses a custom application class (I'd guess the vast majority of apps over the 65k limit would be in this category), that class does not end up in the first dex file which causes devices without built in MultiDex support to crash with the error
[AndroidRuntime] java.lang.RuntimeException: Unable to instantiate application md5a3fc106bb082f0a6c07b5025b0a464e3.MyApplication: java.lang.ClassNotFoundException: Didn't find class "md5a3fc106bb082f0a6c07b5025b0a464e3.MyApplication" on path
I've tried all of the listed solutions, including from Xamarin support in order to get to this to work.
There are numerous articles about it:
https://bugzilla.xamarin.com/show_bug.cgi?id=35491
https://forums.xamarin.com/discussion/57485/multiple-issues-with-library-project-and-multidex
What I've done:
I have created a custom MultiDexMainDexList file by using a modified version of the mainDexClasses.bat file (as per the articles).
I then modified the command that Xamarin throws at it to use the full path names as Xamarin just tries to use "obj\Debug"
mainDexClasses_fixed.bat --output C:\Users\bradl_000\Documents\blocke79\App\App\obj\Debug\multidex.keep "'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v6.0\mono.android.jar';'C:\androidsdk\extras\android\support\multidex\library\libs\android-support-multidex.jar';'C:\Users\bradl_000\Documents\blocke79\App\App\obj\Debug__library_projects__\Aniways.AndroidBinding\library_project_imports\aniways-V2.3.08.jar'" (have trimmed this massive list for reading)
This produces a MultiDexMainDexList file with all of the classes in my project. which I then add this to my project with the new build action of "MultiDexMainDexList" (only available in Alpha channel v6).
This gets rid of the error regarding the application class but instead throws a new error regarding not being able to find the PackageManager class.
java.lang.NoClassDefFoundError%3A+mono.MonoPackageManager_Resources
I then started thinking that I should trim down the entire list of classes in the MultiDexMainDexList file and keep only the ones that I think my custom application class needs to load. No matter what I've done to this list I still get the error regarding the PackageManager. The package manager class is included and I have tried playing with the order of the classes in case that made a difference.
mono/MonoPackageManager.class
Has anyone traveled the same path with more success than me? Is it even possible?

Pentaho 5.0.1 CE Adding folder to pentaho-solutions directory

How do I get a folder to appear in the browser after adding it to \pentaho-solutions in Pentaho 5.0.1 CE. The documentation I read does not seem to work with this new version.
1. Create a new directory in /pentaho/server/biserver-ee/pentaho-solutions/.
Use underscores instead of spaces in the solution directory name. Ensure that the directory has the appropriate user
and group ownership to be writable from the BI Platform.
2. Using an XML-aware text editor (or Design Studio), create a file named index.xmlin your new solution directory.
3. Copy the following text into the index.xml file, changing the content accordingly:
***<index>
<name>Example Solution</name>
<description>This solution contains examples I created while learning to
work with action sequences.</description>
<icon></icon>
<visible>true</visible>
<display-type>icons</display-type>
</index>***
4. Save the file and close the text editor.
5. Log into the Pentaho User Console as an administrator.
6. Refresh the solution repository cache by going to the Toolsmenu, then selecting the Refreshsubmenu, then
clicking on Repository Cache.
You now have a new solution directory. It will show up in all file dialogues in the Pentaho User Console as well as the
Solution Browser in the left pane.
Every time you add or edit an action sequence to your solution directory, you must refresh the repository cache as
explained above. Each user currently logged into the Pentaho User Console must also refresh their session cache; this
is best done by re-logging into the Pentaho User Console.
I am using Pentaho design studio to develop an xaction sequence script. I followed this procedure:
1. In Design Studio, go to the Filemenu, then select New, and click on Other...in the sub-menu.
The Newwindow will appear.
2. In the Newwindow, click the triangle next to Pentaho, select New Action Sequence Wizard, then click Next.
3. In the File namefield, type hello_world.xaction.
4. Select Hello Worldfrom the Templatedrop-down box, then click Finish.
The wizard will generate the new file and bring you back to the workbench.
5. Click on HelloWorldComponentin the Process Actionssection on the left.
The right side of the screen will change to show the options available for this action: Nameand Message. The
Name field controls the name of the component in the Process Actions list on the left; it doesn't do anything else of
note. The Message field contains the text that will appear on the screen when the action sequence is run. It is prepopulated with %quote, which is a token that represents a quote message in a nonexistent properties file. Pentaho
used to provide properties files for each example, but they have been removed from the standard Pentaho Business
Analytics distribution.
6. Replace the %quotewith a sufficiently inspiring message.
Alternatively, you could create a hello_world.propertiesfile and populate it with the appropriate messages and
tokens, but that has no advantage unless you intend to internationalize this action sequence.
7. Save the file.
You now have a working action sequence that prints a short text message: "Hello, World." plus whatever you typed into
the Message field. The first part of the message is determined by a message bundle packaged with the Pentaho Web
application archive.
To test the action sequence, use the Test tab if you are on Windows or OS X, or log into the Pentaho User Console and
run it from the Solution Browser.
Running the sample xaction fails with
Sorry. We really did try.
Something went wrong. Please try again
or contact your administrator.
I figure this is because pentaho cannot locate the xaction file as specified in the file path when I generate the url from within design studio. The folder I created within the solution directory does not appear in the browser directory list despite refreshing the cache. Any help?
With Version 5 the files and folders are no longer stored in "/pentaho/server/biserver-ee/pentaho-solutions/..."
It is stored now in a jackrabbit repository.
You can create folders and upload files in the user console.
I did mistake after starting biserver 5.2. Unexpectedly i deleted Public folder after configuring to jackrabbit. Now how do i create the folder so that i can see Public and Home Folders.
Sorry for getting back to this question some time later, just in case someone searches something related to Pentaho repositories management with no success, i hope this information can help.
Just to make things more clear, i'm using version 5.2.x and i'm supposing you want to create a new folder on the root directory of Browse Files screen, something that is not allowed on Pentaho5 CE Web Console.
The answers about repository management based on JackRabbit are correct, so the old way we used to configure new "solutions" folders doesn't work anymore. From version 5 on, Pentaho exposes an interesting REST api that allows you doing things not allowed in web console.
For instance, for creating a folder in root directory you should create a http REST PUT request against Pentaho Server (using tools like curl or if you appreciate Google Chrome, something like Advanced Rest Client, etc.) using the following URL:
http://localhost:8080/pentaho/api/repo/dirs/:new_directory_name?userid=admin&password=password
Pentaho repository directory REST api is documented here:
http://javadoc.pentaho.com/bi-platform500/webservice500/resource_DirectoryResource.html
It's worthy to spend some time reading REST API the documentation.

CRM 2011, ILMerge and localization

I'm having some trouble merging the localization satellite assemblies into the plugin DLL for CRM2011.
Either that, or I don't know how to use the merged resources afterwards.
I create a few plugins and create a basic resource file (default - English) and one for a specific culture (at the time of writing it's for Polish localizations, but later I'll need to add French as well).
I make sure not to sign the assembly itself, as ILMerge will sign the finished assembly itself.
This is the command I use to merge the extra satellite assembly:
ilmerge /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319 /log:log.txt /keyfile:KeyFile.snk /out:Plugins.dll DynamicsCRM2011.Plugins.dll pl-PL\DynamicsCRM2011.Plugins.resources.dll
As you can see, the plugins are in .NET 4.0 and I've got the required .config file for ILMerge to use the required assemblies for merging.
The generated file appears fine, I can register it with CRM plugin-registrator, add new steps and so forth.
However, it will always use the default language. I've tried changing the System.Threading.Thread.CurrentThread.UICulture, but this didn't help. When I created a ResourceManager class and used GetString("ErrorMessage", new System.Globalization.CultureInfo("pl-PL")), I got an Exception that the specified ResourceManager doesn't know what to do with the specified culture.
I know of this question here. However, the posted solution seems to be an old one. The generated resource .cs files do not use a ComponentResourceManager. Also, parts of the code posted there have been marked as deprecated.
I'm not really sure what I'm am to do now, or how to further debug this, as I have very little experience when it comes to working with assemblies themselves. Please, help me get those satellite assemblies under control.
Update:
I've been working with sandbox plugins for a while now, and thus I no longer have access to things such as CurrentCulture (or at least I cannot change such things). I've tried tackling this problem once more: I've created a simple plugin which is fired when a new Account is saved. Nothing fancy. Here's the actual plugin code:
ResourceManager rm = new ResourceManager(typeof(Properties.Resources));
var s = rm.GetString("ErrorAlreadyPosted", new System.Globalization.CultureInfo("pl-PL"));
throw new InvalidPluginExecutionException(s);
The code no longer throws an exception about not being able to find the specified culture... also the code obviously throws an exception at the end, but the important thing is WHAT the exception message is. I'd expect it to be in Polish.
Alas, it is not. The string returned by GetString is still in English.
The command I used for ILmerge is the same as before, but with the /lib parameter specified so that I don't have to copy all the CRM SDK dlls...
Apparently it is not possible to read resources from with the context of a Plugin.
Read up on MSDN: http://msdn.microsoft.com/en-us/library/hh670609.aspx#BKMK_UseXMLWebResourcesAsLanguageResources
Quote: When a plug-in requires localized text, you can use an XML web resource to store the localized strings so the plug-in can access them when needed. The structure of the XML is your option, but you may want to follow the structure used by ASP.NET Resource (.resx) files to create separate XML web resources for each language. For example, the following is an XML web resource named localizedString.en_US that follows the pattern used by .resx files.
This is all I know so far - have yet to build my own solution for localization of a crm plugin.
If you use a reflector tool to look at the generated assembly, do you see your resource(s) embedded correctly? You may be experiencing the bug as outlined in the link you posted.
Try setting Thread.CurrentThread.CurrentUICulture and\or Thread.CurrentThread.CurrentCulture.
Also try hooking into the AppDomain.CurrentDomain.AssemblyLoad and\or AppDomain.CurrentDomain.AssemblyResolve to debug which assemblies are being attempted to load and from where. You might need to customize their behavior so that instead of loading an external assembly to load an internal resource instead.
You can try embedding project references as resources instead of using ilmerge as well.
See this: http://bartlomiej.net/dotnet/embeded-assembies-into-an-executable/
The way we eventually handled this is by adding the localization XML files (generated by Visual Studio) as CRM resources, and created a bit of custom code which seeks the appropriate resource and then seeks the localization text inside.
It's, obviously, not as simple as just using the generated C# localization class, and requires some prep work. However, with that prep-work in place and with using nameof it's now almost as simple as the aforementioned resource classes.

SharePoint 2007 Publishing Site

Created a new Publishing site to serve a portal for our division. It contains several custom coded webparts that fetch data from the db and/or RSS feds and outside links.
I found it absolutely dumb that as a owner I'm having to approve my own page. Is there was to turn off this functionality? Or modifying so that only a document library runs through the approval process?
In the edit mode, there is a link "Reminder: Check for Unpublished Items" and if I click it all of my web parts and all the links, pictures, and other contents within these web parts are highlighted with a fat dotted red line. How do I get rid of this since what sharepoint is complaining about is embedded in these webpart?
If I try to create a doc library called "Announcements" I get an error:
"The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /Announcements/Forms/AllItems.aspx"
For some reason it does not like the word, as I can call it BuggsBunny and all is fine. Is "Announcements" a key word of some kind in SharePoint? I really need to create a list with this name.
Thanks,
Risho
I found it absolutely dumb that as a
owner I'm having to approve my own
page. Is there was to turn off this
functionality? Or modifying so that
only a document library runs through
the approval process?
You should choose, when you are creating your site, a "Publishing site" template rather than a "Publishing site with workflows". The main difference between these two is the fact that you'll approval workflow on nearly everything activated with the later while the former is free of it but still allows you to activate it if needed
there is a link "Reminder: Check for
Unpublished Items" and if I click it
all of my web parts and all the links,
pictures, and other contents within
these web parts are highlighted with a
fat dotted red line. How do I get rid
of this since what sharepoint is
complaining about is embedded in these
webpart?
Don't know where you are hosting your webpart ressources (style library, document library, image library ? outside of SharePoint ? On the 12 hives ?) but if they are within SharePoint libraries and the content is not published with a 1.0 version available for the readers, you'll have this error. Deactivate the approval workflow or publish AND approve theses items. Please also note that external content will probably trigger this red link, but I suggest you to use a limited "visitor" account to check up the final rendering. The "outlining" is a nice addition but it's not always working as expected, mainly with external content.
If I try to create a doc library
called "Announcements" I get an error:
"The resource cannot be found.
Description: HTTP 404. The resource
you are looking for (or one of its
dependencies) could have been removed,
had its name changed, or is
temporarily unavailable. Please review
the following URL and make sure that
it is spelled correctly.
There is a default annoucement list in SharePoint (with its dedicated template, not sure that you have one provisioned with the publishing template that you picked, that might be a reason why you have this strange error. The default announcements list or its template is not a document library. If you want a document library with that name, and that specific name gives you that error, I suggest that you create a document library called AnnouncementsDocuments and then change its title for "Annoucements", that way the url will be clean of the dreaded name and you'll have the specified title.
For the error message, have a look within the source of the error message page, you might have, in some comments, more information that might help us to help you.
Hope it will help :)

Resources