The PlugIn slug is the widget Url path, e.g. 'category-posts'.

Why is my WordPess widget not properly prepared for the new localization?

What is the slug of my WordPress plugin?

What is the slug of my WordPress plugin?

You don’t need any more fils in the language directory. All you need is to register and use

In some cases you get this hint: “This plugin is not properly prepared for localization.”

Your WordPress PlugIn localization at can't be translatet.
Your WordPress PlugIn localization at can’t be translatet.

You added the header with the Plugin Name, Author and Text Domain well. But this warning above isn’t extinguish. So you have to check the Text Domain. It is the slug of your PlugIn.

If you want to migrat your WordPress PlugIn translations and localizations to

The slug of your PlugIn is the Url path of your WordPress repository or the Url path: ‘category-posts’.

The text domain is a unique identifier, which makes sure WordPress can distinguish between all loaded translations.

For the plugin slug isn’t a name of a single PHP file or it isn’t a folder were your plugin is contained in! is more restricted to extinguish between all loaded translations as the linked How to documentation for internationalize your plugin on

The PlugIn slug is the widget Url path, e.g. 'category-posts'.
The PlugIn slug is the widget Url path, e.g. ‘category-posts’.

This name is given by WordPress only one time and is so unique.

If your plugin Url is, the plugin slug is: ‘category-posts’.

... or you can find the PlugIn slug with the widget repository name, e.g. 'category-posts'.
… or you can find the PlugIn slug with the widget repository name, e.g. ‘category-posts’.

WordPress makes sure that it is a unique name.

The same shows the plugin SVN repository Url path: Is the Url the plugin slug is: ‘category-posts’.

After changeing to the right slag for your Text Domain. Only few seconds shows all widget translation files and have the possibility to translate all translation arguments.

Now the Readme and all other translation files can be set with
Now the Readme and all other translation files can be set with


Google Chart Tools is a nice library for data visualisation as charts. It is free and provides many chart types which can adapted easily, but not neigher less suitable.

Chart drawn with Google Chart Tools, mySQL/PHP and JSON

The chart libray exepts an Javascript array. This example gets the data from a mySQL database, which carry the data from server to the client with JSON.


The major important approach is to encode the data-array to JSON on server side and parse the data-array on client side. I prefer for this example jQuery, because it is frequentyl used. Other JSON Javascript libraries were possible but parsing is mandatory also on client side, the returned JSON string from server.

Encode JSON with PHP on server side:

echo json_encode($data); 

Parse the JSON string with native Javascript API-object “window.JSON” on client side. Browsersupport [1]



Now we are ready for getting the data out of the database with PHP.

Set up an array and the returned data have to represents also this array structure. See the data structure at the link above and build it on server side.

    $db =  mysql_connect($dbhost,$dblogin,$dbpwd);
    $day = date('d');
    $month = date('m');
    $lastMonth = (string)($month-1);	
    $lastMonth = strlen($month - 1) == 1? '0'.$lastMonth : $lastMonth;
    $SQLString = "SELECT 	
		    count( as counts,, month,
		    date FROM analytics  
		    WHERE year = '2012' AND month = '$month' 
		    OR (month = '$lastMonth' and day > '$day') 
		    GROUP BY day, month 
		    ORDER BY date asc";		
    $result = mysql_query($SQLString);    
    $num = mysql_num_rows($result);   

# set heading	
    $data[0] = array('day','counts');		
    for ($i=1; $i<($num+1); $i++)
        $data[$i] = array(substr(mysql_result($result, $i-1, "date"), 5, 5),
			(int) mysql_result($result, $i-1, "counts"));
    echo json_encode($data);

The tracker.php returns something like this:


[]: An Javascript array-object. (Important: But not yet a object which understands the Google Chart Tools function .arraytodatatable(). For parse this returned JSON data string to the apropriate javascript object, see the method below .parseJSON() from jQuery.)

Google JSAPI API and jQuery:

Get the data on client side we use also a jQuery function for AJAX interactions, jQuery.ajax() [2]. For Google Chart Tools we need the Google JSAPI API, which loads with Javascript the Google Visualization and the chart itself [3].

From up to now it depends on the transfered datas with Javascript and of corse jQuery libraries. It means, do not forget to parse the JSON string delivered from server in a Google Chart Tools known JSON object.

    <title> Tracker</title>
    <!-- Load jQuery -->
    <script language="javascript" type="text/javascript" 
    <!-- Load Google JSAPI -->
    <script type="text/javascript" src=""></script>
    <script type="text/javascript">
        google.load("visualization", "1", { packages: ["corechart"] });

        function drawChart() {
            var jsonData = $.ajax({
                url: "php/tracker.php",
                dataType: "json",
                async: false

            var obj = window.JSON.stringify(jsonData);
            var data = google.visualization.arrayToDataTable(obj);

            var options = {
                title: ' Trackerdaten'

            var chart = new google.visualization.LineChart(
            chart.draw(data, options);

    <div id="chart_div" style="width: 900px; height: 500px;">

[1] Browsersupport for JSON parsing

[2] The jQuery.ajax() function It needs the jQuery library