Exemple #1
0
        public static string GetPluralString(string s, string p, int n)
        {
            IntPtr intPtr;
            IntPtr intPtr1;
            IntPtr intPtr2;
            string str;

            Catalog.MarshalStrings(s, out intPtr, p, out intPtr1, null, out intPtr2);
            try
            {
                IntPtr intPtr3 = Catalog.ngettext(intPtr, intPtr1, n);
                if (intPtr3 != intPtr)
                {
                    str = (intPtr3 != intPtr1 ? UnixMarshal.PtrToStringUnix(intPtr3) : p);
                }
                else
                {
                    str = s;
                }
            }
            finally
            {
                UnixMarshal.FreeHeap(intPtr);
                UnixMarshal.FreeHeap(intPtr1);
            }
            return(str);
        }
Exemple #2
0
        public static String GetPluralString(String s, String p, Int32 n)
        {
            IntPtr ints, intp, _ignore;

            MarshalStrings(s, out ints, p, out intp, null, out _ignore);

            try
            {
                // ngettext(3) returns an input pointer if no translation is found
                IntPtr r = ngettext(ints, intp, n);
                if (r == ints)
                {
                    return(s);
                }
                if (r == intp)
                {
                    return(p);
                }
                return(UnixMarshal.PtrToStringUnix(r));
            }
            finally
            {
                UnixMarshal.FreeHeap(ints);
                UnixMarshal.FreeHeap(intp);
            }
        }
Exemple #3
0
        public static string GetString(string s)
        {
            string str;
            IntPtr heap = UnixMarshal.StringToHeap(s);

            try
            {
                IntPtr intPtr = Catalog.gettext(heap);
                str = (intPtr == heap ? s : UnixMarshal.PtrToStringUnix(intPtr));
            }
            finally
            {
                UnixMarshal.FreeHeap(heap);
            }
            return(str);
        }
Exemple #4
0
        public static String GetString(String s)
        {
            IntPtr ints = UnixMarshal.StringToHeap(s);

            try {
                // gettext(3) returns the input pointer if no translation is found
                IntPtr r = gettext(ints);
                if (r != ints)
                {
                    return(UnixMarshal.PtrToStringUnix(r));
                }
                return(s);
            }
            finally {
                UnixMarshal.FreeHeap(ints);
            }
        }